2014-10-09 73 views
0

我需要用于验证进来图案像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); 
      } 
     } 
    } 
} 

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

+2

它是PRIM还是PREM? – nhahtdh 2014-10-09 05:39:01

+0

只有PREM。 – 2014-10-09 07:17:34

+0

您是否希望PREM'部分不区分大小写? – nhahtdh 2014-10-09 07:19:21

回答

0
^[a-zA-Z0-9]+(?:-PREM)?_[a-zA-Z0-9]{3}$ 

你可以试试看。

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

+0

为什么downvoted ????????????????? – vks 2014-10-09 05:53:11

+0

感谢您的回答。它工作正常 – 2014-10-09 07:13:42

+0

@ user2945308欢迎您。 – vks 2014-10-09 07:14:08