普段はコピペしたりしてなんとなく使っている正規表現。
そんな正規表現について細かくみていきたいと思います。
今回見ていくのは下記のような正規表現です。
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
この正規表現は、メールアドレスが正しい形式であるかどうかを確認するために使われます。
各部分の意味を分解して説明します。
/
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
正規表現は「/」に始まり「/」に終わる。
最初の「/」は開始スラッシュ、最後の「/」は終了スラッシュと呼ばれます。
^
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
文字列の先頭を示します。この記号があることで、文字列の最初からパターンが始まることを意味します。

読み方は「キャレット」らしいよ。初めて知ったわ
[^\s@]+
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
[ と ] の間は「文字クラス」と呼ばれ、特定の文字の集合を定義します。
^ が最初にある場合、これは「この文字以外」を意味します。

さっきの「^(キャレット)」は文字列の先頭を示していたけど、今回の ^ は別の意味と役割を持つんだね
ここでは、空白文字(\s)と @ 以外の文字を指定しています。
+ は「1回以上の繰り返し」を意味します。
つまり、空白や @ 以外の文字が1つ以上続く必要があります。
@
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
メールアドレスの必須部分である @ を示します。
この部分は必ず存在しなければなりません。
[^\s@]+
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
再び、空白文字や @ 以外の文字が1回以上続くことを示します。
これは、@ の後にドメイン名が続くことを意味します。

この ^ も[ と ] の間(文字クラス)の最初にあるから「この文字以外」の意味を持つんだね
\.
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
ドット(.)を示します。
ドットは特別な意味を持つため、エスケープ文字(\)を使って通常の文字として扱います。
ここでいう「特別な意味」とは「正規表現における特殊文字」に該当するかどうかということ。
[^\s@]+
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
ドットの後に空白や @ 以外の文字が1回以上続くことを示します。
これは、ドメインの拡張子(例:com、netなど)を表します。

この ^ も「この文字以外」の意味だね
$
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
文字列の末尾を示します。
この記号があることで、パターンが文字列の最後で終わることを意味します。
まとめ
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
この正規表現は、メールアドレスが次の条件を満たすかどうかを確認します。
このように、正規表現を使うことで、特定の形式に従った文字列を簡単に検証することができます。
パッと見ると謎の文字列にしか見えない表現も、1つ1つ見ていくと意味を持っていて新しい発見が見つかったりする。
これは正規表現だけでなく実はあらゆる表現技法において言えることなのかもしれない。
そんなことを思いながら本記事をまとめてみました。