正規表現で否定を表すパターンを作成する際に忘れがちな記法をメモしておきます。
目次
xxx
で開始しない文字列
「否定先読み」を利用します。
^(?!xxx).*$
xxx
で終了しない文字列
「否定戻り読み」を利用します。
^.*(?<!xxx)$
xxx
を含まない文字列
「否定先読み」を応用します。
^(?!.*xxx).*$
「否定先読み」とは
(?!
と)
で否定したい文字列を括ることで、その文字列と”一致しない”ことをテストする記法です。
開始位置より先を読み、指定した文字列と”一致しなければ”trueです。
「否定戻り読み」とは
(?<!
と)
で否定したい文字列を括ることで、その文字列と”一致しない”ことをテストする記法です。
開始位置より後ろを読み、指定した文字列と”一致しなければ”trueです。
否定戻り読みは、指定された式を各位置で一致させようとする性質上、可変長のパターンを指定することは出来ません。
NG例)
/^(?<!xxx.*)$/