【问题标题】:Regex for string validation用于字符串验证的正则表达式
【发布时间】:2014-12-03 22:32:57
【问题描述】:

我需要一个正则表达式来验证 NBTAAA-PREM_001NBTAAA_001 等模式中的字符串

NBTAAA 部分可以是数字或字母或字母数字,后跟固定字符串 -PREM(连字符 PREM),然后是下划线 _,后跟三个字母数字字符。

对于这个“NBTAAA_001”,需要不带“-PREM”的正则表达式(连字符 PREM)。

我已经写好了代码:

public static void main(String[] args) {
    List<String> input = new ArrayList<String>();

    input.add("NBTAAA-PRIM_001");
    input.add("NBTAAA_001");

    for (String ssn : input) {
        //  String ssn = "NBTAAA-PRIM_001";
        if (ssn.indexOf("-") != -1) {
            int PRIMbeginIndex = ssn.indexOf("-") + 1;
            int PRIMEndIndex = PRIMbeginIndex + 4;

            String d = ssn.substring(PRIMbeginIndex, PRIMEndIndex);

            if (d.equalsIgnoreCase("PRIM")) {

                if (ssn.matches("^([A-Za-z0-9]+(?=.*?\bPRIM\b)+_[A-Za-z0-9]{3})$")) {
                    System.out.println(" PRIM image value : " + ssn);
                }
            }
        }
        else {
            if (ssn.matches("^([A-Za-z0-9]+_[A-Za-z0-9]{3})$")) {
                System.out.println("NORMAL IMAGE value : " + ssn);
            }
        }  
    }
} 

但它不能正常工作。请帮我解决这个问题。

【问题讨论】:

  • 你想让PREM部分不区分大小写吗?

标签: regex string validation


【解决方案1】:
^[a-zA-Z0-9]+(?:-PREM)?_[a-zA-Z0-9]{3}$

你可以试试这个。查看演示。

http://regex101.com/r/iM2wF9/16

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-09
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多