正規表現.test() / exec()
| 対応: | ES3(ECMAScript 1999) |
|---|
正規表現オブジェクトのメソッドで、文字列が正規表現のパターンに一致するかどうかを判定します。『test()』は真偽値を返し、『exec()』は一致した詳細情報を返します。
構文
// パターンに一致するかを判定します。
var result = 正規表現.test("文字列");
// 一致した詳細情報を取得します。
var match = 正規表現.exec("文字列");
メソッド一覧
| メソッド | 概要 |
|---|---|
| 正規表現.test("文字列") | 文字列がパターンに一致すれば『true』、一致しなければ『false』を返します。単純な一致判定に適しています。 |
| 正規表現.exec("文字列") | 最初に一致した部分の詳細情報を配列で返します。一致しなかった場合は『null』を返します。キャプチャグループの内容やマッチ位置も取得できます。 |
よく使う正規表現パターン
正規表現の記法について詳しくはMDN等のリファレンスを参照してください。
| パターン | 概要 |
|---|---|
| ^ | 文字列の先頭に一致します。 |
| $ | 文字列の末尾に一致します。 |
| . | 任意の1文字に一致します。 |
| * | 直前のパターンの0回以上の繰り返しに一致します。 |
| + | 直前のパターンの1回以上の繰り返しに一致します。 |
| \d | 数字1文字に一致します。『[0-9]』と同じ意味です。 |
| \w | 英数字またはアンダースコア1文字に一致します。 |
| [abc] | 『a』『b』『c』のいずれか1文字に一致します。 |
| (パターン) | グループ化します。一致した部分をキャプチャグループとして取得できます。 |
サンプルコード
sample_regexpTest.js
// パターン1: test()で一致判定を行う例
var postalPattern = /^\d{3}-\d{4}$/; // 郵便番号の形式を定義します。
console.log(postalPattern.test("123-4567")); // 『true』と出力されます。
console.log(postalPattern.test("abc-defg")); // 『false』と出力されます。
console.log(postalPattern.test("12-345")); // 『false』と出力されます。
// パターン2: バリデーション関数での実用例
function isValidEmail(email) {
var emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
return emailPattern.test(email);
}
console.log(isValidEmail("okabe@future-gadget-lab.jp")); // 『true』と出力されます。
console.log(isValidEmail("invalid-email")); // 『false』と出力されます。
console.log(isValidEmail("makise@kurisu.c")); // 『true』と出力されます。
// パターン3: フラグを使った大文字・小文字を区別しない検索
var namePattern = /kurisu/i; // iフラグで大文字・小文字を無視します。
console.log(namePattern.test("Makise Kurisu")); // 『true』と出力されます。
console.log(namePattern.test("makise kurisu")); // 『true』と出力されます。
console.log(namePattern.test("Makise Okabe")); // 『false』と出力されます。
// パターン4: exec()で詳細情報を取得する例
var emailPattern = /([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/;
var result = emailPattern.exec("連絡先: okabe@future-gadget-lab.jp です");
console.log(result[0]); // 『okabe@future-gadget-lab.jp』と出力されます。一致した文字列全体です。
console.log(result[1]); // 『okabe』と出力されます。1つ目のキャプチャグループです。
console.log(result[2]); // 『future-gadget-lab.jp』と出力されます。2つ目のキャプチャグループです。
console.log(result.index); // 『4』と出力されます。一致した開始位置です。
// 一致しない場合
var noMatch = emailPattern.exec("メールアドレスなし");
console.log(noMatch); // 『null』と出力されます。
true false false true false true true true false okabe@future-gadget-lab.jp okabe future-gadget-lab.jp 4 null
概要
『正規表現.test()』は文字列がパターンに一致するかどうかを『true』か『false』で返す、最もシンプルなマッチングメソッドです。入力値のバリデーションや条件分岐に適しており、一致するかどうかだけを知りたい場合に使用します。
『正規表現.exec()』は一致した文字列の詳細情報を配列で返します。配列の『[0]』には一致した文字列全体、『[1]』以降にはキャプチャグループの内容が格納されます。さらに『index』プロパティで一致した位置を取得できるため、文字列の解析やデータの抽出に適しています。
正規表現のパターンはスラッシュ『/』で囲んで記述します。末尾に『g』フラグを付けるとグローバル検索、『i』フラグを付けると大文字・小文字を区別しない検索になります。文字列側のメソッドで正規表現を使う場合は『文字列.match() / matchAll() / search()』を参照してください。
対応ブラウザ
デスクトップ
3 以前 ×
4 以前 ×モバイル
Android Browser
37 以降 ○
4 以前 ×
Chrome Android
36 以降 ○
17 以前 ×
Firefox Android
79 以降 ○
3 以前 ×記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。