我正在使用以下正则表达式:
^([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})
- 两种选择:
[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})$