RegExp object. There also is a regex literal as in many other languages:
/regex/. However, they are used slightly differently.
Regex objects never equal each other
The argument to
/regex/.test(...) is converted to a string as defined by the specs, which means e.g.
.test(null) is equal to
Globally matching regex objects remember the last index they matched. Multiple calls to
test() will advance this pointer:
> matcher = new RegExp("foo", "g") // <- "global" flag > matcher.test("foobar") // => true > matcher.lastIndex // => 3 > matcher.test("foobar") // => false > matcher.lastIndex // => 0
This does not happen when creating a new regex object each run, as with
/foo/g.test("foobar"). Note that when using the
test() method, the
g flag does not help at all. Use
match() if you want an array of matches.