我正在使用以下正则表达式:
^([W|w][P|p]|[0-9]){8}$
上面的正则表达式也接受wp1234567(wp 7位数字).预期:WP 6位数字或wp 6位数字或仅8位数字
例如:
WP123456
wp126456
64535353
解决方法:
注意[W | w]匹配W,w和|,因为|字符类中的字符失去了交替运算符的特殊含义.同样,通过在[W | w] [P | p] | [0-9]周围设置分组(…),您可以匹配8个WP或数字的整个序列.
您应该在有限的量词中设置正确的值,并删除分组,并使用交替显示以允许wp 6位数字或仅允许8位数字:
^(?:[Ww][Pp][0-9]{6}|[0-9]{8})$
正则表达式匹配:
> ^-字符串的开头(如果使用String#matches()检查整个字符串,则无需这样做)
>(?:[Ww] [Pp] [0-9] {6} | [0-9] {8})-2个替代方法:
> [Ww] [Pp] [0-9] {6}-W或w后跟P或p后跟6位数字
> | – 要么…
> [0-9] {8}-准确的8位数字
> $-字符串结尾
其他情况(以防万一):
如果需要匹配由7或8位数字组成的字符串,则需要用{7,8}替换{8}有限量词:
^(?:[Ww][Pp][0-9]{6}|[0-9]{7,8})$
如果您不想匹配Wp123456或wP123456,请在开头再使用一个替换:
^(?:(?:WP|wp)[0-9]{6}|[0-9]{8})$
标签:java,regex
来源: https://codeday.me/bug/20191027/1943715.html