正規表現で[^*]は何を意味するのか?

正規表現において”[^*]”は「アスタリスク記号を含まない1文字」を判定します。

「”^”は直後の文字が行の先頭にあるかを判定するんじゃないの?」

「”*”は直前のパターンを0回以上繰り返すかどうかでしょ。」

と思われるかもしれません。

ですが、これらのメタ文字は”[]”内で使われるときに挙動が変わってきます。

[ ] 内で挙動が変わる正規表現のメタ文字

“[ ]” は 「括弧内で指定したいずれかの1 文字」を検索するメタ文字です。

その中で”^”と使うと、先頭かどうかではなく「直後の文字が含まれない1文字」を判定します。

例えば”[^a]”は「a以外の1文字」とマッチします。

JS

/[^a]/.test("a"); // false
/[^a]/.test("b"); // true

では”*”はどうでしょうか?

この場合は単純に「アスタリスク記号かどうか?」を判定します。

そのため”[^*]”とした場合には「アスタリスク記号を含まない1文字」となるのです。

JS

/[^*]/.test("*"); // false
/[^*]/.test("b"); // true

Related Posts