JS正規表現におけるエスケープが必要な文字
JavaScriptで正規表現を使用する際、一部の文字は特別な意味を持つため、そのままではマッチできません。これらの文字をマッチさせるには、エスケープ処理を行う必要があります。 この記事では、JS正規表現でエスケープが必要な文字と、その方法について詳しく解説し、正規表現のマッチングエラーを回避し、より正確な正規表現を記述できるようにします。
エスケープが必要な特殊文字
正規表現では、以下の文字は特殊な意味を持つため、文字自体にマッチさせる場合はバックスラッシュ(\)を使用してエスケープする必要があります。
1. メタ文字
メタ文字は、正規表現で事前に定義された特殊な意味を持つ文字であり、エスケープして初めて文字自体にマッチさせることができます。
メタ文字 | 説明 |
---|---|
. |
改行文字以外の任意の1文字にマッチ |
* |
直前の表現に0回以上マッチ |
+ |
直前の表現に1回以上マッチ |
? |
直前の表現に0回または1回マッチ |
^ |
文字列の先頭にマッチ |
$ |
文字列の末尾にマッチ |
| |
2つの選択肢のいずれかにマッチ |
() |
キャプチャグループまたは非キャプチャグループを作成 |
[] |
括弧内の任意の1文字にマッチ |
{} |
マッチ回数を指定 |
\ |
エスケープ文字 |
2. 特殊文字
一部の文字は、正規表現で特殊な意味を持つため、エスケープして初めて文字自体にマッチさせることができます。
特殊文字 | 説明 |
---|---|
\n |
改行文字にマッチ |
\r |
復帰文字にマッチ |
\t |
タブ文字にマッチ |
\b |
単語境界にマッチ |
\d |
数字にマッチ |
\w |
英数字とアンダースコアにマッチ |
\s |
空白文字にマッチ |
エスケープ方法
特殊文字をエスケープするには、バックスラッシュ(\)を使用します。たとえば、文字 *
にマッチさせるには、\*
を使用します。
// * を含む文字列にマッチさせる例
const str = "This is a string with a * in it.";
const regex = /This is a string with a \* in it\./;
console.log(regex.test(str)); // true
まとめ
JS正規表現でエスケープが必要な文字を理解することは、正しい正規表現を記述するために非常に重要です。上記の特殊文字とエスケープ方法を覚えておき、正規表現を記述する際には注意してください。
関連Q&A
-
Q: エスケープが必要な文字をエスケープせずに使用するとどうなりますか?
A: エラーが発生するか、意図した文字列にマッチしない可能性があります。たとえば、メタ文字をエスケープせずに使用すると、そのメタ文字が持つ特殊な意味で解釈されてしまいます。
-
Q: バックスラッシュ自体をマッチさせたい場合はどうすればよいですか?
A: バックスラッシュも特殊文字であるため、エスケープする必要があります。つまり、バックスラッシュをマッチさせるには、2つのバックスラッシュ (\\) を使用します。
-
Q: 正規表現のエスケープについてさらに詳しく学ぶにはどうすればよいですか?
A: MDN Web Docs の正規表現のドキュメントや、その他の正規表現に関する書籍やウェブサイトを参照してください。
その他の参考記事:JavaScript の正規表現