正規表現とは
正規表現(Regular Expression / Regex)は、文字列のパターンを記述するための記法です。テキストの検索・抽出・置換・バリデーションに使われ、あらゆるプログラミング言語でサポートされています。
基本的な記号
.:任意の1文字(改行を除く)*:直前のパターンの0回以上の繰り返し+:直前のパターンの1回以上の繰り返し?:直前のパターンの0または1回{n,m}:直前のパターンのn回以上m回以下[]:文字クラス。[a-z]は小文字英字^:行の先頭$:行の末尾():グループ化とキャプチャ|:OR(いずれか)
よく使うパターン
- メールアドレス:
^[\w.+-]+@[\w-]+\.[a-z]{2,}$ - 日本語の電話番号:
^0\d{1,4}-?\d{1,4}-?\d{4}$ - 郵便番号:
^\d{3}-?\d{4}$ - 日付(YYYY-MM-DD):
^\d{4}-\d{2}-\d{2}$
JavaScriptでの使い方
const email = 'user@example.com'
const pattern = /^[\w.+-]+@[\w-]+\.[a-z]{2,}$/i
console.log(pattern.test(email)) // true
const text = '東京都渋谷区'
const result = text.match(/[都道府県]/) // ['都']
グリーディとレイジーマッチング
*や+はデフォルトで「できるだけ多く」マッチしようとします(グリーディ)。*?や+?とすると「できるだけ少なく」マッチします(レイジー)。HTMLタグの抽出などで重要な違いです。