正则表达式太一般了

时间:2013-11-06 18:40:16

标签: java regex string matcher

我有正则表达式:

"(al|sf|sa|sc|nrc|nrc form|doe|doe f|lsi|doe form psd f|doe al f)?[\\s\\-\\.]*[\\d]{3,6}[\\s\\-\\.]*[\\w]{1,4}"

我不希望纯粹的数字字符串(如“2001”)通过此测试,但“2001”正在传递此正则表达式。为什么?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

?*部分是可选的,因此正则表达式中唯一需要的部分是

\d{3,6}\w{1,4}

\w包含数字,因此它会通过,因为2001年是3 \d和1 \w

答案 1 :(得分:1)

你可以像这样添加负面的预测:

(?!^\\d+$)