Regular expressions in Javascript are represented by a RegExp object. There also is a regex literal as in many other languages: /regex/. However, they are used slightly differently.
Regex literal
- Usage: 
/foo+/ - Shorthand for creating a regular expression object
 
RegExp() object
- Usage: 
RegExp("foo+")ornew RegExp("foo+") - No surrounding slashes required (they're the literal markers)
 - Since the argument is a string, backslashes need to be escaped as well: 
RegExp("\\d+") 
Gotchas
- Regex objects never equal each other Show archive.org snapshot
 - The argument to 
/regex/.test(...)is converted to a string as defined by the specs Show archive.org snapshot , which means e.g..test(null)is equal to.test("null"). - 
Globally matching regex objects 
  remember the last index they matched
  
    Show archive.org snapshot
  
. Multiple calls to 
test()will advance this pointer: 
matcher = new RegExp("foo", "g") // <- "global" flag
matcher.test("foobar") // => true
matcher.lastIndex // => 3 (where the regexp stopped scanning)
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"). Use String#match() if you want an array of matches.
Posted by Dominik Schöler to makandra dev (2015-12-07 07:31)