JavaScript RegExp Flags
RegExp Modifier Flags
Flags are parameters that can modify how a regex pattern is used,such as making it case-insensitive or global.
JavaScript Regex Flags
Revised July 2025
| Flag | Description |
|---|---|
| /d | Performs substring matches (new 2022) |
| /g | Performs a global match (find all) |
| /i | Performs case-insensitive matching |
| /m | Performs multiline matching |
| /s | Allows . (dot) to match line terminators (new 2018) |
| /u | Enables Unicode support (new 2015) |
| /v | An upgrade to the /u flag for better Unicode support (new 2025) |
| /y | Performs a "sticky" search (new 2015) |
Flag Syntax: /pattern/flags
| / | Opening delimiter for the regular expression |
| pattern | Regular expression (a search criteria) |
| / | Closing delimiter for the regular expression |
| flags | One or more single modifier flags |
RegExp /g Flag (Global)
The/g flag matches all occurrences of the pattern, rather than just the first one.
Example
A global search for "is" in a string:
const pattern = /is/g;
let result = text.match(pattern);
RegExp /i Flag (Insensitive)
The/i flag makes the match case-insensitive: /abc/i matches "abc", "AbC", "ABC".
Example
A case-insensitive search for "w3schools" in a string:
const pattern = /is/g;
let result = text.match(pattern);
RegExp /d Flag
The/d flag specifies the start and the end of a match.
Example
Match every sub text that starts or ends with aa or bb:
const pattern = /(aa)(bb)/d;
let result = text.match(pattern);
RegExp /s Flag (Single line/DotAll)
The/s flag allows the . (dot) metacharacter to match newline characters (\n) in addition to any othercharacter.
Example
Without the /s flag, \n does not match . (wildchars):
const pattern = /Line./gs;
let result = text.match(pattern);
RegExp /y Flag (Sticky):
The/y flag performs a "sticky" search from the lastIndex property of the RegExp object.
The/y flag lets a match start at the exact position where the last match ended.
Examples
const pattern = /\w+/y;
// Start match from position 4
pattern.lastIndex = 4;
let result = text.match(pattern);
The /y flag must be set to allow match from a position.
This will not work:
const pattern = /\w+/;
// Start match from position 4
pattern.lastIndex = 4;
let result = text.match(pattern);
Note
The example above uses a regexmetacharacter /\w+/.
The meaning of/\w+/ is "mach any word".
You will learn more about metacharacters in the next chapters.
RegExp /u Flag (Unicode)
The/u flag enables full Unicode support in a regular expression.
By default, JavaScript RegExp treats 4-byte Unicode characters(like emojis or less common symbols) as two separate 2-byte "surrogate" code units.
The/u flag treats the pattern as a sequence of Unicode code points,which is important for correctly handling of characters outside the Basic Multilingual Plane (BMP).
Example
const pattern = /\u{04DC0}/u;
// Returns true:
let result = pattern.test(text);
Without the /u flag, regular expressions are not "Unicode-aware".
Example
const pattern = /\u{04DC0}/;
// Returns false:
let result = pattern.test(text);
Note
JavaScript 2025 introduced the/v flag as an "upgrade" to the/u flag.
The /v Flag enables more Unicode-related features.
RegExp /v Flag (Unicode Sets)
The/v flag is an upgrade to the /u flag for better Unicode support.
It enables more Unicode-related features.
The new features are:
- The \p escape sequence matches strings, instead of just characters.
- The character class is upgraded to allow intersection, union, and subtraction syntaxes,as well as matching multiple Unicode characters.
Example
const pattern = /\p{Emoji}/v;
// Returns true:
let result = pattern.test(text);
Without the /v flag, regular expressions are not "Unicode-aware".
Example
const pattern = /\p{Emoji}/;
// Returns false:
let result = pattern.test(text);
RegExp Group Modifiers (?flag)
The (?flag) syntax is a group modifier (inline flag modifier).
It allows for modifying flags in a part of a pattern, rather than to the entire pattern.
(?flags:pattern) enables the flags only for the pattern in the group.
Example
The i flag is only enabled for the W3Schools part of the pattern.
const pattern = /(?i:WShools) tutorials/;
// Returns true:
let result = pattern.test(text);
The i flag is only enabled for the W3Schools part of the pattern.
const pattern = /(?i:W3Sshools) tutorials/;
// Returns false:
let result = pattern.test(text);
JavaScript Regex Flag Properties
Revised July 2025
| Property | Description |
|---|---|
| global | Returnstrue if the /g flag is set |
| hasIndices | Returnstrue if the /d flag is set |
| ignoreCase | Returnstrue if the /i flag is set |
| multiline | Returnstrue if the /m flag is set |
| dotAll | Returnstrue if the /s flag is set |
| sticky | Returnstrue if the /y flag is set |
| unicode | Returnstrue if the /u flag is set |
| unicodeSets | Returnstrue if the /v flag is set |
The dotAll Property
ThedotAll property returnstrueif the /s flag is set.
The global Property
Theglobal property returnstrueif the /g flag is set.
The hasIndices Property
ThehasIndices property returnstrueif the /d flag is set.
The ignoreCase Property
TheignoreCase property returnstrueif the /i flag is set.
The multiline Property
Themultiline property returnstrueif the /m flag is set.
The sticky Property
Thesticky property returnstrueif the /y flag is set.
The unicode Property
Theunicode property returnstrueif the /u flag is set.
The unicodeSets Property
TheunicodeSets property returnstrueif the /v flag is set.
Example
const pattern = /\p{Emoji}/v;
let result = pattern.unicodeSets;
Regular Expression Methods
Regular ExpressionSearch andReplace can be done with different methods.
These are the most common:
String Methods
| Method | Description |
|---|---|
| match(regex) | Returns an Array of results |
| matchAll(regex) | Returns an Iterator of results |
| replace(regex) | Returns a new String |
| replaceAll(regex) | Returns a new String |
| search(regex) | Returns the index of the first match |
| split(regex) | Returns an Array of results |
RegExp Methods
| Method | Description |
|---|---|
| regex.exec() | Returns an Iterator of results |
| regex.test() | Returns true or false |

