[英]Regular expressions: how to match numbers?
我想使用正則表達式來匹配這樣的數字:
58158
60360
98198
格式為ABCAB
。
我使用下面的代碼來匹配ABAB
:
(([\d]){1,}([\d]){1,})\1{1,}
例如5858
但如何搭配ABCAB(58158)?
對於ABCAB
格式的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"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.