0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

正規表現入門

Last updated at Posted at 2019-07-29

コーディング時の文字列の置換や、JavaScriptでのフォームの簡易的なバリデーションなどで使う機会があるのでまとめてみました。

JavaScriptでの正規表現(match)

//正規表現のパターンを作る
const pattern = /正規表現/オプション;
 
//検索対象の文字列を作る
const str = "検索対象の文字列";
 
//検索する
const result = str.match(pattern); 

//マッチした文字列を表示(マッチしないとnullを表示)
console.log(result);

郵便番号をマッチさせてみる

const pattern = /^[0-9]{3}-?[0-9]{4}$/;
const string ="123-4567";
const result = string.match(pattern);
 
console.log(result);

「^[0-9]{3}-?[0-9]{4}$」を分解して見ていきます。

  • 「^」は先頭
  • 「[0-9]」は0~9のうち1文字
  • 「{3}」は直前の指定を3回繰り返す
  • 「-?」は「-」を0回か1回
  • 「{4}」は直前の指定を4回繰り返す
  • 「$」は末尾

「^[0-9]{3}」の部分で、前半の数字3桁を表しています。
「-?」はハイフンの部分ですが、省略される事も想定して0回か1回としています。
「[0-9]{4}」後半の数字4桁を表しています。

記法まとめ

オプション(フラグ)

表記 意味
g 文字列全体に対して検索(無指定だと最初のマッチングで終了)
i 大文字/小文字を区別しない(無指定の場合は区別する)
m 複数行の文字列を扱う(^と$が各行の先頭と末尾にマッチする)

メタ文字

表記 意味
^ ~で始まる文字列
$ ~で終わる文字列
. 任意の1文字

文字クラス

表記 意味
[012] 0,1,2のどれか1つ
[0-9] 0~9のどれか1つ
[A-Z] A~Zのどれか1つ
[A-Za-z] A~Zとa~zのどれか1つ
[^012] 012以外で1文字
[01][01] 00,01,10,11のどれか1つ

略記法

表記 意味
\s 空白
\S 空白ではない
\d 数字 [0-9]と同じ
\D 数字ではない [^0-9]と同じ
\w [A-Za-z_0-9]と同じ
\W [^A-Za-z_0-9]と同じ

出現回数

表記 意味
* 0回以上
+ 1回以上
? 0か1回
{n} n回
{n,} n回以上
{n,m} n~m回

グループ化

表記 意味
| どれか
() まとめる

エスケープ

表記 意味
\++ +の1回以上の繰り返し
\. .を表す
/ /を表す

まとめ

メールアドレスの正規表現でのバリデーションは事故の元。
先人が考えたものをありがたく使わせていただきましょう。

おまけ match以外のメソッド

何を返すか

メソッド 返ってくるもの
match() マッチパターンが配列で返される
search() マッチパターンの先頭位置が返される(0番目から)
test() マッチパターンがある場合はtrue、ない場合はfalseが返される
exec() マッチパターンが1つ返される

使い分け

用途 メソッド
マッチパターンを全て抜き出したい場合 match
繰り返し操作で順にマッチパターンが欲しい場合 exec
マッチパターンがあるかどうかだけを知りたい場合 test
先頭のマッチパターンだけが欲しい場合 search、パターンにgを付けないmatch

文法

js
//match()
対象文字列.match(正規表現)
 
//search()
対象文字列.search(正規表現)
 
//test()
対象正規表現.test(文字列)
 
//exec()
対象正規表現.exec(文字列)
0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?