Character class escape: \d, \D, \w, \W, \s, \S

A character class escape is an escape sequence that represents a set of characters.

Syntax

regex
\d, \D
\s, \S
\w, \W

Note: , is not part of the syntax.

Description

Unlike character escapes, character class escapes represent a predefined set of characters, much like a character class. The following character classes are supported:

\d

Matches any digit character. Equivalent to [0-9].

\w

Matches any word character, where a word character includes letters (A–Z, a–z), numbers (0–9), and underscore (_). If the regex is Unicode-aware and the i flag is set, it also matches other Unicode characters that get canonicalized to one of the characters above through case folding.

\s

Matches any whitespace or line terminator character.

The uppercase forms \D, \W, and \S create complement character classes for \d, \w, and \s, respectively. They match any character that is not in the set of characters matched by the lowercase form.

Unicode character class escapes start with \p and \P, but they are only supported in Unicode-aware mode. In Unicode-unaware mode, they are identity escapes for the p or P character.

Character class escapes can be used in character classes. However, they cannot be used as boundaries of character ranges, which is only allowed as a deprecated syntax for web compatibility, and you should not rely on it.

Examples

Splitting by whitespace

The following example splits a string into an array of words, supporting all kinds of whitespace separators:

js
function splitWords(str) {
  return str.split(/\s+/);
}

splitWords(`Look at the stars
Look  how they\tshine for you`);
// ['Look', 'at', 'the', 'stars', 'Look', 'how', 'they', 'shine', 'for', 'you']

Specifications

Specification
ECMAScript Language Specification
# prod-CharacterClassEscape

Browser compatibility

BCD tables only load in the browser

See also