Twigで正規表現を使った条件分岐を行う場合、mathesを使って以下のようなコードを書く。
{% if String matches '{#ここに正規表現を書く}' %}
Code...
{% endif %}
単純に見えるが、正規表現を使うにあたってTwig独特の仕様があったのでメモしておく。
メタ文字のエスケープはバックスラッシュ3つ!
例として、郵便番号の正規表現を見てみよう。
普通は以下のような書き方になると思う。
^\d{3}-\d{4}$
これを先程のTwig文にそのまま当てはめてもうまく動かないのだ。
{% if Zip matches '{^\d{3}-\d{4}$}' %}
Code...
{% endif %}
調べてみると、Twigで正規表現を使う場合、エスケープに使うバックスラッシュは「3つ」必要とのことだ。
コードを書き換え次のようにすると動くようになる。
{% if Zip matches '{^\\\d{3}-\\\d{4}$}' %}
Code...
{% endif %}