正規表現を使用して、次のような数値に一致させたい:
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"]