test()
method executes a search for a match between a regular expression and a specified string. Returns
true
or
false
.
The source for this interactive example is stored in a GitHub repository. If you'd like to contribute to the interactive examples project, please clone https://github.com/mdn/interactive-examples and send us a pull request.
regexObj.test(str)
str
The string against which to match the regular expression.
true
if there is a match between the regular expression and the string
str
. Otherwise,
false
.
使用
test()
whenever you want to know whether a pattern is found in a string.
test()
returns a boolean, unlike the
String.prototype.search()
method (which returns the index of a match, or
-1
if not found).
To get more information (but with slower execution), use the
exec()
method. (This is similar to the
String.prototype.match()
method.)
As with
exec()
(or in combination with it),
test()
called multiple times on the same global regular expression instance will advance past the previous match.
Simple example that tests if
"hello"
is contained at the very beginning of a string, returning a boolean result.
const str = 'hello world!'; const result = /^hello/.test(str); console.log(result); // true
The following example logs a message which depends on the success of the test:
function testInput(re, str) {
let midstring;
if (re.test(str)) {
midstring = 'contains';
} else {
midstring = 'does not contain';
}
console.log(`${str} ${midstring} ${re.source}`);
}
When a regex has the
global flag
set,
test()
will advance the
lastIndex
of the regex. (
RegExp.prototype.exec()
also advances the
lastIndex
property.)
Further calls to
test(
str
)
will resume searching
str
starting from
lastIndex
。
lastIndex
property will continue to increase each time
test()
返回
true
.
注意:
As long as
test()
返回
true
,
lastIndex
will
not
reset—even when testing a different string!
When
test()
返回
false
, the calling regex's
lastIndex
property will reset to
0
.
The following example demonstrates this behaviour:
const regex = /foo/g; // the "global" flag is set
// regex.lastIndex is at 0
regex.test('foo') // true
// regex.lastIndex is now at 3
regex.test('foo') // false
// regex.lastIndex is at 0
regex.test('barfoo') // true
// regex.lastIndex is at 6
regex.test('foobar') //false
// regex.lastIndex is at 0
// (...and so on)
| 规范 |
|---|
|
ECMAScript (ECMA-262)
The definition of 'RegExp.test' in that specification. |
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
test
|
Chrome 1 | Edge 12 | Firefox 1 | IE 4 | Opera 5 | Safari 1 | WebView Android 1 | Chrome Android 18 | Firefox Android 4 | Opera Android 10.1 | Safari iOS 1 | Samsung Internet Android 1.0 | nodejs Yes |
完整支持
RegExp
RegExp.prototype
RegExp
RegExp.$1-$9
RegExp.input ($_)
RegExp.lastMatch ($&)
RegExp.lastParen ($+)
RegExp.leftContext ($`)
RegExp.prototype.dotAll
RegExp.prototype.flags
RegExp.prototype.global
RegExp.prototype.ignoreCase
RegExp.prototype.multiline
RegExp.prototype.source
RegExp.prototype.sticky
RegExp.prototype.unicode
RegExp.rightContext ($')
RegExpInstance.lastIndex
get RegExp[@@species]
Function
Object
Object.prototype.__defineGetter__()
Object.prototype.__defineSetter__()
Object.prototype.__lookupGetter__()
Object.prototype.__lookupSetter__()
Object.prototype.hasOwnProperty()
Object.prototype.isPrototypeOf()
Object.prototype.propertyIsEnumerable()
Object.prototype.toLocaleString()
Object.prototype.toSource()
Object.prototype.toString()
Object.prototype.valueOf()
Object.setPrototypeOf()