Unicode includes the characters which are made with multiple code points. RegExp character class syntax (/[abc]/
) cannot handle characters which are made by multiple code points as a character; those characters will be dissolved to each code point. For example, ❇️
is made by ❇
(U+2747
) and VARIATION SELECTOR-16 (U+FE0F
). If this character is in RegExp character class, it will match to either ❇
(U+2747
) or VARIATION SELECTOR-16 (U+FE0F
) rather than ❇️
.
This rule reports the regular expressions which include multiple code point characters in character class syntax. This rule considers the following characters as multiple code point characters.
A character with combining characters:
The combining characters are characters which belong to one of Mc
, Me
, and Mn
Unicode general categories.
/^[Á]$/u.test("Á") //→ false /^[❇️]$/u.test("❇️") //→ false
A character with Emoji modifiers:
/^[👶🏻]$/u.test("👶🏻") //→ false /^[👶🏽]$/u.test("👶🏽") //→ false
A pair of regional indicator symbols:
/^[🇯🇵]$/u.test("🇯🇵") //→ false
Characters that ZWJ joins:
/^[👨👩👦]$/u.test("👨👩👦") //→ false
A surrogate pair without Unicode flag:
/^[👍]$/.test("👍") //→ false // Surrogate pair is OK if with u flag. /^[👍]$/u.test("👍") //→ true
This rule reports the regular expressions which include multiple code point characters in character class syntax.
Examples of incorrect code for this rule:
/*eslint no-misleading-character-class: error */ /^[Á]$/u /^[❇️]$/u /^[👶🏻]$/u /^[🇯🇵]$/u /^[👨👩👦]$/u /^[👍]$/
Examples of correct code for this rule:
/*eslint no-misleading-character-class: error */ /^[abc]$/ /^[👍]$/u
You can turn this rule off if you don’t want to check RegExp character class syntax for multiple code point characters.
This rule was introduced in ESLint 5.3.0.
© JS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/rules/no-misleading-character-class