test() メソッドは、正規表現と指定された文字列の一致を調べるための検索を実行します。 true または false を返します。

構文

regexObj.test(str)

引数

str
正規表現にマッチさせる文字列。

返値

正規表現と指定した文字列に一致するものがあった場合は、true。そうでない場合は、false

説明

あるパターンがある文字列内で見つかるかどうか調べたいときは、 test() を使用してください。 String.prototype.search() メソッドがインデックス番号 (または見つからない場合は -1) を返すのとは異なり、 test() は boolean を返します。より多くの情報を得るためには (実行が遅くなりますが)、 exec() メソッドを使用してください (String.prototype.match() メソッドと同様)。 exec() と同様に (またはその組み合わせで)、 test() は同じグローバル正規表現インスタンスで複数回呼び出されると、前回の一致の先に進むことになります。

test() の使用

"hello" が文字列の最初に含まれているかを真偽値で確認する簡単な例です。

var str = 'hello world!';
var result = /^hello/.test(str);
console.log(result); // true

次の例では、テストの成否によってメッセージを表示します。

function testinput(re, str) {
  var midstring;
  if (re.test(str)) {
    midstring = ' contains ';
  } else {
    midstring = ' does not contain ';
  }
  console.log(str + midstring + re.source);
}

グローバルフラグを持つ regex の test() の使用

regex がグローバルフラグを持つ場合、 test() は regex が所有する lastIndex の値を加算します。その後に続けて test() を呼ぶと、 lastIndex から続く str の 部分文字列を検索します (exec() も同様に lastIndex プロパティの値を加算します)。注目すべきは、別な文字列で検索しても lastIndex がリセットされないことです。

次の例はその挙動を示しています。

var regex = /foo/g;

// 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

次の例では、その挙動を利用して文字列内の英単語の総数を割り出します。

function countWords (sText) {

  for (var rWord = /\w+/g, nCount = 0; rWord.test(sText); nCount++);

  return nCount;

}

console.log(countWords("What a beautiful day!")); // 4

【訳注: このサンプルコードで割り出せるのは ASCII 文字で表現できる単語だけです。詳しくは正規表現と Unicode 文字を参照してください。】

仕様書

仕様書 状態 備考
ECMAScript 3rd Edition (ECMA-262) 標準 初回定義。 JavaScript 1.2 で実装。
ECMAScript 5.1 (ECMA-262)
RegExp.test の定義
標準  
ECMAScript 2015 (6th Edition, ECMA-262)
RegExp.test の定義
標準  
ECMAScript Latest Draft (ECMA-262)
RegExp.test の定義
ドラフト  

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung InternetNode.js
基本対応Chrome 完全対応 ありEdge 完全対応 ありFirefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり

凡例

完全対応  
完全対応

Firefox 特有のメモ

Firefox 8 以前では、test() メソッドは正しく実装されていませんでした。引数無しで呼び出された場合には以前の入力 (RegExp.input プロパティ) の値に基づく返値が返されなくてはなりませんが、文字列 "undefined" に対するテスト結果を返していました。これは現行バージョンでは修正されており、現在 /undefined/.test() の返値はエラーでなく true となっています。

関連情報

ドキュメントのタグと貢献者

最終更新者: mfuji09,