taketiyo.log

Web Engineering 🛠 & Body Building 💪

否定の正規表現こんな時どう書く?集【Tips】

Programming

  / /

正規表現で否定を表すパターンを作成する際に忘れがちな記法をメモしておきます。

目次

 

xxxで開始しない文字列

「否定先読み」を利用します。

^(?!xxx).*$

 

xxxで終了しない文字列

「否定戻り読み」を利用します。

^.*(?<!xxx)$

 

xxxを含まない文字列

「否定先読み」を応用します。

^(?!.*xxx).*$

 

「否定先読み」とは

(?!)で否定したい文字列を括ることで、その文字列と”一致しない”ことをテストする記法です。

開始位置より先を読み、指定した文字列と”一致しなければ”trueです。

 

「否定戻り読み」とは

(?<!)で否定したい文字列を括ることで、その文字列と”一致しない”ことをテストする記法です。

開始位置より後ろを読み、指定した文字列と”一致しなければ”trueです。

 
否定戻り読みは、指定された式を各位置で一致させようとする性質上、可変長のパターンを指定することは出来ません。
NG例)

/^(?<!xxx.*)$/