我遇到了正则表达式问题。
我有一个我需要匹配的字符串。该字符串始终以2个字母开头,然后是6位数字,例如
但是,我需要忽略一个字母组合。 e.g:
所以我想写一个正则表达式来匹配字符串的正常格式。
目前,我必须这样做:
Pattern pattern = Pattern.compile("[A-Z]{2}[0-9]{6}");
...
if(pattern.matcher(n).matches() && !n.toUpperCase().startsWith("XX")) {
// do match stuff
}
如何重写我的正则表达式,以便我可以摆脱上面代码中的startsWith子句?
答案 0 :(得分:5)
"(?!XX)[A-Z]{2}[0-9]{6}"
(?!XX)
表示“如果我可以在当前位置匹配XX
则不匹配”,但它实际上并不会更改当前位置(因此它测试的两个字符仍然可以匹配按[A-Z]{2}
。)