正则表达式:如何匹配的数字?(Regular expressions: how to match n

2019-10-17 19:58发布

我想用正则表达式匹配这样的数字:

58158
60360
98198

这是格式ABCAB

我用下面的代码来匹配ABAB

(([\d]){1,}([\d]){1,})\1{1,}

5858 ,但如何搭配ABCAB(58158)?

Answer 1:

对于格式的数字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


Answer 2:

以匹配的形式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"]


文章来源: Regular expressions: how to match numbers?