"【正規表現】ある文字が2回連続している文字列にマッチする正規表現"
via. https://www.softel.co.jp/blogs/tech/archives/2942
【問題】 ある文字が2回連続している文字列にマッチする正規表現は? 【答え】 後方参照を使う。 「ある文字」をキャプチャして、「その文字がもう1回現れた」を表す。 ある文字は「.」、キャプチャするには括弧「()」で囲み、キャプチャした文字列は「バックスラッシュ+何個目のキャプチャかを示す数字」と書く。
/(.)\1/
キャプチャされた値、同じ正規表現内で使えるの、忘れがち。
"後方参照"というらしい。
<?php // 微妙にダメな例 if(preg_match("/(.)\1\1/",$str)) {} ?>
ではなくて、
シングルクォーテーションで。…なんでだっけ。\1をアレしたいせいだと思う…多分。
<?php if(preg_match('/(.)\1\1/',$str)) {} ?>