java 正则 w 6_Java-可选字符的正则表达式

我正在使用以下正则表达式:

^([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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值