LoginSignup
0
1

More than 3 years have passed since last update.

初めて扱う正規表現【JavaScript】

Last updated at Posted at 2019-07-09

フォームの処理で、「郵便番号じゃないから書き直して!」「ふりがなじゃないから書き直して!」というのをやろうとしたとき、正規表現というものが必要になりました。
ちょっと練習もかねて少しみてみます。

正規表現って?

http://gimite.net/help/devas-ja/all_regex.html
ここにある記号たちをうまいこと組み立てて行きます!
JavaScriptで正規表現を表す際には以下の二種類の構文になります。

var str = /正規表現/オプション;    //リテラル
var str = new RegExp('正規表現','オプション');  //コンストラクター

ちなみにオプションというのは主に以下の種類があります。
g・・・グローバルリサーチ(一致する全ての文字列を返します。)
i・・・大文字・小文字を区別しない
m・・・複数行検索(^と$が各行の先頭末尾にマッチ)
s・・・sを改行文字と一致するようにする

レッツ!正規表現

/...a/
こちらの.は任意の一文字を表すので、
abca,3iGa,bbbaなどが当てはまります。

/a*b+/
*は直前文字の0回以上の繰り返し、+は直前文字の1回以上の繰り返しです。
b,abbb,aaab,bbbbなどになりますね。
「****は庭だよ。」は「ハニワだよ」という意味の可能性があるですね。省略可能なのがみそです。

/みみ?ず/
?の直前の文字は省略可能です。
みみず か みず が検索できますね。

/^はるが/
これは先頭が「はるが」のものの身を検索します。
/$落ちた/
これは行末が落ちたのみを検索します。

/^はるが.*落ちてきた$/
はるが二階から落ちてきた、などがヒットします。(元ネタ重力ピエロ)
.*のコンビ技です。

/ヒトカゲ|ゼニガメ|フシギダネ/
これはヒトカゲ、ゼニガメ、フシギダネが検索できます。
囲われたどれかに一致したら検索できます。

/[桃金喰]太郎/
桃太郎、金太郎、喰太郎が一致します。どれかの文字がヒットしたら検索できます。

/[0-9][A-Z]/
2B,9S,などがヒットします。A2はヒットしません...(元ネタニーアオートマタ)
このように複数文字をまとめてセットすることもできます。

/[0-9]{3}/
{3}は直前を三回繰り返すということ。
050,214,555とかがヒットします。

/[0-9]{2,}
こちらは2桁以上の数字になる。
04,210,43508510926とかがヒット。

/[^abc]
abc以外の文字にマッチ。

定義済みの文字クラス

\d・・・[0-9]と同じ意味。数字。
\D・・・[^0-9]と同じ意味。数字以外。
\s・・・空白文字。[\t\n\x0B\f\r]
\S・・・空白文字以外[^\s

エスケープ文字

\/・・・/

使用例

郵便番号を表してみましょう。
/^\d{3}-\d{4}$/
^と$が指定されてるので完全一致ですね。
\dは数字を表すので、数字3桁-数字4桁という意味になっています!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1