Using regular expressions in JavaScript

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+") or new 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

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.

Dominik Schöler Over 8 years ago