# 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) 而不是 ❇️

此规则报告在字符类语法中包含多个代码点字符的正则表达式。此规则将以下字符视为多个代码点字符。

具有组合字符的字符:

组合字符是属于McMeMn 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 字符类语法,则可以关闭此规则。

Last Updated: 5/13/2023, 8:55:38 PM