【发布时间】:2014-12-03 22:32:57
【问题描述】:
我需要一个正则表达式来验证 NBTAAA-PREM_001 和 NBTAAA_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