这必须只匹配这些数字:110, 220, 330, 440, 550, 660, 770, 880, 990
(不是000)。这个正则表达式(pcre)是否有更短的方法?
/^(1{2}|2{2}|3{2}|4{2}|5{2}|6{2}|7{2}|8{2}|9{2})0$/
答案 0 :(得分:3)
您可以使用:
/\b([1-9])\g{1}0\b/
正则表达式分解:
\b # word boundary
[1-9] # match digit 1-9 and group them as captured group #1
\g{1} # back-reference to group #1
0 # match 0
\b # word boundary
答案 1 :(得分:1)
这是一个应该有效的更短的正则表达式:
/^([1-9])\1[0]$/
它使用对第一个匹配字符的后引用来匹配第二个字符。这可确保11
,22
,33
等模式。
以下是regex101表达式中使用的字符的说明:
^
在行的开头断言位置- 第一个捕获小组
([1-9])
- 范围内的单个字符
[1-9]
匹配1到9- 最近匹配的文本相同的文本
\1
匹配与第一个捕获组[0]
匹配字符0字面$
在行尾声明位置
你可以在这里测试一下: https://regex101.com/r/oV6rE7/1