# no-misleading-character-class
禁止在字符类语法中由多个代码点组成的字符
配置文件中的 "extends": "eslint:recommended" 属性启用了该规则
Unicode 包括由多个代码点组成的字符。RegExp 字符类语法 (/[abc]/
) 不能将由多个代码点组成的字符作为一个字符处理;这些字符将被分解到每个代码点。例如,❇️
由 ❇
(U+2747
) 和 VARIATION SELECTOR-16 (U+FE0F
) 制成。如果此字符在 RegExp 字符类中,它将匹配 ❇
(U+2747
) 或 VARIATION SELECTOR-16 (U+FE0F
) 而不是 ❇️
。
此规则报告在字符类语法中包含多个代码点字符的正则表达式。此规则将以下字符视为多个代码点字符。
具有组合字符的字符:
组合字符是属于Mc
、Me
和Mn
Unicode 常规类别
之一的字符。
/^[Á]$/u.test("Á") //→ false
/^[❇️]$/u.test("❇️") //→ false
带有表情符号修饰符的角色:
/^[👶🏻]$/u.test("👶🏻") //→ false
/^[👶🏽]$/u.test("👶🏽") //→ false
一对区域指标符号:
/^[🇯🇵]$/u.test("🇯🇵") //→ false
ZWJ加入的字符:
/^[👨👩👦]$/u.test("👨👩👦") //→ false
没有 Unicode 标志的代理对:
/^[👍]$/.test("👍") //→ false
// Surrogate pair is OK if with u flag.
/^[👍]$/u.test("👍") //→ true
# 规则详情
此规则报告在字符类语法中包含多个代码点字符的正则表达式。
此规则的错误代码示例:
/*eslint no-misleading-character-class: error */
/^[Á]$/u
/^[❇️]$/u
/^[👶🏻]$/u
/^[🇯🇵]$/u
/^[👨👩👦]$/u
/^[👍]$/
此规则的正确代码示例:
/*eslint no-misleading-character-class: error */
/^[abc]$/
/^[👍]$/u
# 何时不使用
如果您不想检查多个代码点字符的 RegExp 字符类语法,则可以关闭此规则。