Posted almost 6 years ago. Visible to the public. Repeats.

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

  • Regex objects never equal each other Archive

  • The argument to /regex/.test(...) is converted to a string as defined by the specs Archive , which means e.g. .test(null) is equal to .test("null").

  • Globally matching regex objects remember the last index they matched Archive . Multiple calls to test() will advance this pointer:

    Copy
    > 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.

Links

makandra has been working exclusively with Ruby on Rails since 2007. Our laser focus on a single technology has made us a leader in this space.

Owner of this card:

Avatar
Dominik Schöler
Last edit:
2 days ago
by Tobias Kraze
About this deck:
We are makandra and do test-driven, agile Ruby on Rails software development.
License for source code
Posted by Dominik Schöler to makandra dev
This website uses short-lived cookies to improve usability.
Accept or learn more