用于检查前 2 位数字的正则表达式[重复]

问题描述 投票:0回答:2

之前我使用正则表达式

[4569]{1}[0-9]{7}
来检查数字是否以4569开头,其余7位数字是否为数字。

现在,我想更新为如下。

前 2 个字符为 31,33,55,66,77,其余 6 位数字为数字。

所以我更新到

[31|33|55|66|77]{2}[0-9]{6}
,但它不起作用。

任何人都可以指出我在这里缺少什么吗?

即使我尝试了

(31|33|55|66|77){2}[0-9]{6}

我尝试了下面的字符串,其中

[31|33|55|66|77]{2}[0-9]{6}
都通过了两个字符串。

51123456
55123456

样品检查

https://regexr.com/7vdgr

regex
2个回答
2
投票

您提供的正则表达式

[31|33|55|66|77]{2}[0-9]{6}
未按预期运行,因为方括号
[ ]
使用不正确。正则表达式中的方括号定义一个字符类,这意味着它匹配括号内指定的字符集中的任何单个字符。

要更正正则表达式,您应该使用括号

( )
而不是方括号来对前两个字符的选项进行分组。这是更新后的正则表达式:

(31|33|55|66|77)[0-9]{6}

参见: https://regexr.com/7vdhm


0
投票

您的陈述:

[31|33|55|66|77]{2}[0-9]{6}
这里不需要

{2},就像您搜索 [31|33|55|66|77] 组中的数字之一出现两次一样。还可以使用 () 而不是 [] 来创建捕获组。

所以使用:

 (31|33|55|66|77)[0-9]{6}
© www.soinside.com 2019 - 2024. All rights reserved.