js の正規表現で、「完全一致」でマッチする
TOC
こんにちはー。
機会があって、
正規表現で「完全一致」のテストの方法が知りたくなりました。
今日はその方法を紹介します。
どういうことがしたいのか
1 | /abcde/.test("abcde"); // true |
このような場合だと、
1行目のようなテストする文字列がパターンと同じ場合、 true になりますが、
含んでいる場合(2行目)も true になってしまいます。
これを、2行目が false になって、1行目だけ true になるようにしたいんです。
完全一致したいとき
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions
次のようにすればできました!
1 | /^パターン$/ |
^
が先頭を表し、$
が末尾を表します。
だから、それにパターンを挟む形でやれば「完全一致」でマッチできます。
例:
1 | /^下$/.test("下"); // true |
メリットは・・?
なら、「if ("下" === "下") {}
」でよくない?
と思うかもしれません。
たしかに上の例ではそうですが、
正規表現で比較すると、様々なメリットを得ることもできます。
「完全一致」の or 検索
例えば、次のように書いたとしましょう。
1 | var reg = /^(下|上)$/; |
こうすれば、or でのテストもできますよ~
使用例:
1 | /^(下|上)$/.test("下"); // true |
その他、いろいろな「特殊文字」が使える
完全一致と言っていいのかわかりませんが、?
や、.
などの特殊文字も使えます。
どれか1文字にマッチする
.
を使います。
1 | /^A.C$/.test("ABC"); // true |
※ 改行文字にはマッチしません。
改行文字にマッチするには、\n
や、\s
(スペースなども含む)を使用します。
直前の文字の1回以上の繰り返しにマッチする
+
を使います。
1 | /^AA+B$/.test("AAB"); //true |
※繰り返さない場合(0回以上の繰り返し)にもマッチするときは、*
を使います。
その他の特殊文字の意味と使い方は、MDN の記事をご覧ください。
感想
学んでいて、
正規表現の実用性の高さに感動しました。