我正在使用以下正则表达式:
^([W|w][P|p]|[0-9]){8}$
上述正则表达式也接受wp1234567
(wp
+ 7位数)。预期:WP
+ 6位或wp
+ 6位或仅8位
例如:
WP123456
wp126456
64535353
答案 0 :(得分:4)
请注意,[W|w]
与W
,w
和|
匹配,因为字符类中的|
会失去其交替运算符的特殊含义。此外,通过在(...)
周围设置分组[W|w][P|p]|[0-9]
,您可以匹配WP
或数字的整个序列的8次出现。
您应该在有限量词中设置正确的值并删除分组并使用替换以允许wp
+ 6位数或仅8位数字:
^(?:[Ww][Pp][0-9]{6}|[0-9]{8})$
请参阅demo
正则表达式匹配:
^
- 字符串的开头(如果用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位数字组成的字符串,则需要将{8}
有限量词替换为{7,8}
:
^(?:[Ww][Pp][0-9]{6}|[0-9]{7,8})$
如果您不想匹配Wp123456
或wP123456
,请在开头再使用一次:
^(?:(?:WP|wp)[0-9]{6}|[0-9]{8})$