Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
- トップページ
- JavaScript辞典
- 正規表現.test() / exec()
正規表現.test() / exec()
正規表現オブジェクトのメソッドで、文字列が正規表現のパターンに一致するかどうかを判定します。『test()』は真偽値を返し、『exec()』は一致した詳細情報を返します。
構文
// パターンに一致するかを判定します。
var result = 正規表現.test("文字列");
// 一致した詳細情報を取得します。
var match = 正規表現.exec("文字列");
メソッド一覧
| メソッド | 概要 |
|---|---|
| 正規表現.test("文字列") | 文字列がパターンに一致すれば『true』、一致しなければ『false』を返します。単純な一致判定に適しています。 |
| 正規表現.exec("文字列") | 最初に一致した部分の詳細情報を配列で返します。一致しなかった場合は『null』を返します。キャプチャグループの内容やマッチ位置も取得できます。 |
よく使う正規表現パターン
| パターン | 概要 |
|---|---|
| ^ | 文字列の先頭に一致します。 |
| $ | 文字列の末尾に一致します。 |
| . | 任意の1文字に一致します。 |
| * | 直前のパターンの0回以上の繰り返しに一致します。 |
| + | 直前のパターンの1回以上の繰り返しに一致します。 |
| \d | 数字1文字に一致します。『[0-9]』と同じ意味です。 |
| \w | 英数字またはアンダースコア1文字に一致します。 |
| [abc] | 『a』『b』『c』のいずれか1文字に一致します。 |
| (パターン) | グループ化します。一致した部分をキャプチャグループとして取得できます。 |
サンプルコード
// test()で一致判定を行う例
var pattern = /^\d{3}-\d{4}$/; // 郵便番号の形式を定義します。
console.log(pattern.test("123-4567")); // 『true』と出力されます。
console.log(pattern.test("abc-defg")); // 『false』と出力されます。
console.log(pattern.test("12-345")); // 『false』と出力されます。
// exec()で詳細情報を取得する例
var emailPattern = /(\w+)@(\w+\.\w+)/;
var result = emailPattern.exec("連絡先: taro@example.com です");
console.log(result[0]); // 『taro@example.com』と出力されます。一致した文字列全体です。
console.log(result[1]); // 『taro』と出力されます。1つ目のキャプチャグループです。
console.log(result[2]); // 『example.com』と出力されます。2つ目のキャプチャグループです。
console.log(result.index); // 『4』と出力されます。一致した開始位置です。
// 一致しない場合
var noMatch = emailPattern.exec("メールアドレスなし");
console.log(noMatch); // 『null』と出力されます。
実行結果
上記のコードを実行すると、コンソールには以下のように出力されます。
true false false "taro@example.com" "taro" "example.com" 4 null
概要
『正規表現.test()』は文字列がパターンに一致するかどうかを『true』か『false』で返す、最もシンプルなマッチングメソッドです。入力値のバリデーションや条件分岐に適しており、一致するかどうかだけを知りたい場合に使用します。
『正規表現.exec()』は一致した文字列の詳細情報を配列で返します。配列の『[0]』には一致した文字列全体、『[1]』以降にはキャプチャグループの内容が格納されます。さらに『index』プロパティで一致した位置を取得できるため、文字列の解析やデータの抽出に適しています。
正規表現のパターンはスラッシュ『/』で囲んで記述します。末尾に『g』フラグを付けるとグローバル検索、『i』フラグを付けると大文字・小文字を区別しない検索になります。文字列側のメソッドで正規表現を使う場合は『文字列.match() / matchAll() / search()』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。