JavaScript: RegExp Flags
Regex flags change the meaning of the regular expression, or behavior of Regex Functions . For how to add them, see JavaScript: RegExp Syntax
RegExp Flags
g
(aka global)-
Find all matches. Don't stop after first found.
Used by:
State stored in
RegExp.prototype.global
. i
(aka ignoreCase)-
Ignore case. Example:
"WATER".search( /t/i )
.State stored in
RegExp.prototype.ignoreCase
. m
(aka multiline)-
Make the RegExp syntax
^
and$
match any newline beginning/end. (instead of the beginning/end of whole string)State stored in
RegExp.prototype.multiline
.console.log(/^B/.test("A\nB") === false); console.log(/^B/m.test("A\nB") === true);
u
(aka unicode)-
(JS2015)
Treat string as sequence of unicode characters.
If your string contains a character whose codepoint is β₯ 2^16, such as emoji, you shoud set this flag.
It's a good idea to always have this flag on.
(Tip: this flag is useful to prevent matching a code unit in input string. [see JavaScript: String Code Unit] It's not for βenablingβ matching Unicode. (Unicode characters are matched always.) To match Unicode character properties, use unicode propery character class syntax. [see RegExp Unicode Property] )State stored in
RegExp.prototype.unicode
.console.log(/\ud83d/.test("π")); console.log(/\ud83d/u.test("π") === false); // U+D83D is not a valid unicode character. D83D is hexadecimal of first code unit of a surrogate pair for π /* [ π FACE WITH TEARS OF JOY codepoint 128514 codepoint in hexadecimal 1f602 bytes in UTF-16: D8 3D DE 02 So in JavaScript , the char is made up of 2 code units: D83D DE02 When you search for D83D without unicode flag, it returns true. but with unicode flag, it returns false. ] */
y
(aka sticky)-
(JS2015)
Make the match start at the index
RegExp.prototype.lastIndex
. (does not change the meaning of^
. It still mean beginning of string or line.)State stored in
RegExp.prototype.sticky
. -
s
(aka dotAll) -
(JS2018)
Make the dot
.
also match newline characters. [see RegExp Syntax]
State stored in
RegExp.prototype.dotAll
.console.log(/A.B/.test("A\nB") === false); console.log(/A.B/s.test("A\nB") === true);
JavaScript Regular Expression
- RegExp Tutorial
- RegExp Functions
- RegExp Syntax
- RegExp Flags
- Replacement String Dollar Sign Sequence
- Replacement Function Arguments