RegExp() constructor
The RegExp
constructor creates a regular expression object for matching text with a pattern.
For an introduction to regular expressions, read the Regular Expressions chapter in the JavaScript Guide.
Syntax
Literal, constructor, and factory notations are possible:
/pattern/flags new RegExp(pattern[, flags]) RegExp(pattern[, flags])
Parameters
pattern
-
The text of the regular expression.
As of ES5, this can also be another
RegExp
object or literal (for the two RegExp constructor notations only). Patterns may include special characters to match a wider range of values than would a literal string. flags
-
If specified,
flags
is a string that contains the flags to add.Alternatively, if an object is supplied for the pattern, the
flags
string will replace any of that object's flags (andlastIndex
will be reset to0
) (as of ES2015).If
flags
is not specified and a regular expressions object is supplied, that object's flags (andlastIndex
value) will be copied over.flags
may contain any combination of the following characters:-
d
(indices) -
Generate indices for substring matches.
-
g
(global match) -
Find all matches rather than stopping after the first match.
-
i
(ignore case) -
If
u
flag is also enabled, use Unicode case folding. -
m
(multiline) -
Treat beginning and end characters (
^
and$
) as working over multiple lines. In other words, match the beginning or end of each line (delimited by\n
or\r
), not only the very beginning or end of the whole input string. -
s
("dotAll") -
Allows
.
to match newlines. -
u
(unicode) -
Treat
pattern
as a sequence of Unicode code points. (See also Binary strings). -
y
(sticky) -
Matches only from the index indicated by the
lastIndex
property of this regular expression in the target string. Does not attempt to match from any later indexes.
-
Exceptions
- If
pattern
cannot be parsed as a valid regular expression, aSyntaxError
is thrown. - If
flags
contains repeated characters or any character outside of those allowed, aSyntaxError
is thrown.
Examples
Literal notation and constructor
There are two ways to create a RegExp
object: a literal notation and a constructor.
- The literal notation's parameters are enclosed between slashes and do not use quotation marks.
- The constructor function's parameters are not enclosed between slashes but do use quotation marks.
The following three expressions create the same regular expression:
/ab+c/i new RegExp(/ab+c/, 'i') // literal notation new RegExp('ab+c', 'i') // constructor
The literal notation results in compilation of the regular expression when the expression is evaluated. Use literal notation when the regular expression will remain constant. For example, if you use literal notation to construct a regular expression used in a loop, the regular expression won't be recompiled on each iteration.
The constructor of the regular expression object—for example, new RegExp('ab+c')
—results in runtime compilation of the regular expression. Use the constructor function when you know the regular expression pattern will be changing, or you don't know the pattern and are getting it from another source, such as user input.
Specifications
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
RegExp |
1 |
12 |
1 |
4 |
5 |
1 |
1 |
18 |
4 |
10.1 |
1 |
1.0 |
See also
- A polyfill of many modern
RegExp
features (dotAll
,sticky
flags, named capture groups, etc.) is available incore-js
- Regular Expressions chapter in the JavaScript Guide
String.prototype.match()
String.prototype.replace()
© 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/RegExp