このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
RegExp.prototype.test()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
test() はRegExp インスタンスのメソッドで、正規表現と指定された文字列を照合するための検索を実行します。一致があった場合はtrue を、それ以外の場合はfalse を返します。
JavaScript のRegExp オブジェクトはglobal またはsticky フラグ(/foo/g や/foo/y など)を設定するとステートフルになります。これらは前回一致したときのlastIndex を格納します。これを内部的に使用することで、test() を使用して文字列の複数の照合を反復処理することができます(キャプチャグループを使用)。
In this article
試してみましょう
const str = "table football";const regex = new RegExp("foo*");const globalRegex = new RegExp("foo*", "g");console.log(regex.test(str));// 予想される結果: trueconsole.log(globalRegex.lastIndex);// 予想される結果: 0console.log(globalRegex.test(str));// 予想される結果: trueconsole.log(globalRegex.lastIndex);// 予想される結果: 9console.log(globalRegex.test(str));// 予想される結果: false構文
test(str)引数
str正規表現と照合する文字列。すべての値は文字列に変換されますので、これを省略したり
undefinedを渡したりするとtest()は文字列"undefined"を検索するようになります。
返値
正規表現と指定した文字列str の間に一致するものがあった場合は、true。そうでない場合は、false。
解説
あるパターンがある文字列内で見つかるかどうか調べたいときは、test() を使用してください。test() は論理値を返します。これは (一致した場所のインデックス番号、または見つからない場合は-1 を返す)String.prototype.search() メソッドとは異なります。
より多くの情報を得るためには (実行が遅くなりますが)、exec() メソッドを使用してください (String.prototype.match() メソッドと同様)。
exec() と同様に (またはその組み合わせで)、test() は同じグローバル正規表現インスタンスで複数回呼び出されると、前回の一致の先に進むことになります。
例
>test() の使用
"hello" が文字列の先頭近くに含まれているかを論理値で確認する簡単な例です。
const str = "hello world!";const result = /^hello/.test(str);console.log(result); // true次の例では、テストの成否によってメッセージを表示します。
function testInput(re, str) { const midString = re.test(str) ? "contains" : "does not contain"; console.log(`${str} ${midString} ${re.source}`);}グローバルフラグを持つ正規表現の test() の使用
正規表現にグローバルフラグが設定されている場合、test() は正規表現が所有するlastIndex の値を加算します。(RegExp.prototype.exec() も同様にlastIndex プロパティの値を加算します。)
その後にさらにtest(str) を呼び出すと、str をlastIndex から検索します。lastIndex プロパティはtest() がtrue を返すたびに増え続けます。
メモ:test() がtrue を返す限り、lastIndex は別な文字列をテストした場合であっても、リセットされません。
test() がfalse を返した場合、正規表現のlastIndex プロパティを呼び出すと0 にリセットされます。
次の例はその挙動を示しています。
const regex = /foo/g; // "global" フラグを設定// regex.lastIndex は 0 です。regex.test("foo"); // true// regex.lastIndex は 3 です。regex.test("foo"); // false// regex.lastIndex は 0 です。regex.test("barfoo"); // true// regex.lastIndex は 6 です。regex.test("foobar"); //false// regex.lastIndex は 0 です。regex.test("foobarfoo"); // true// regex.lastIndex は 3 です。regex.test("foobarfoo"); // true// regex.lastIndex は 9 です。regex.test("foobarfoo"); // false// regex.lastIndex は 0 です。// (...以下略)仕様書
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-regexp.prototype.test> |