我想用正则表达式匹配这样的数字:
58158
60360
98198
这是格式ABCAB
。
我用下面的代码来匹配ABAB
:
(([\d]){1,}([\d]){1,})\1{1,}
如5858
,但如何搭配ABCAB(58158)?
我想用正则表达式匹配这样的数字:
58158
60360
98198
这是格式ABCAB
。
我用下面的代码来匹配ABAB
:
(([\d]){1,}([\d]){1,})\1{1,}
如5858
,但如何搭配ABCAB(58158)?
对于格式的数字ABCAB
:
(\d)(\d)\d\1\2
这个地方没有限制对A=B=C
。 使用负前瞻为A!=B!=C
(\d)(?!\1)(\d)(?!\1|\2)\d\1\2
编辑:
有没有边界匹配使58158
将匹配36958158
:
$num=36958158;
preg_match('/(\d)(?!\1)(\d)(?!\1|\2)\d\1\2/',$num,$match);
echo ">>> ".$match[0];
>>> 58158
以匹配的形式ABCAB,使用整数\b(\d\d)\d(\1)\b
。
\b
是一个字边界和\1
引用第一组。
例如(在JavaScript,以便它可以在浏览器中测试,但它在大多数正则表达式的解决方案工程):
var matches = '58158 22223 60360 98198 12345'.match(/\b(\d\d)\d(\1)\b/g);
给
["58158", "60360", "98198"]