如何从特定类别中获取所有 Unicode 字符?

Hyd*_*per 2 javascript unicode ecmascript-4 ecmascript-3

例如,如何x-y\uxxxx\Uxxxxxxxxx从连接符标点 ( Pc ) 类别中获取代码点模式,用于扫描 ECMAScript 3/JavaScript 标识符?

原始问题

我需要帮助来验证词法扫描仪的 ECMA-262(3º 版,7.6)标识符的有效字符(代码点)。

语法引用

Identifier ::

  • IdentifierName 但不是 ReservedWord

IdentifierName ::

  • IdentifierStart
  • IdentifierName IdentifierPart
  • IdentifierStart ::
  • UnicodeLetter
  • $
  • _
  • \ UnicodeEscapeSequence # 不需要检查这个

IdentifierPart ::

  • IdentifierStart
  • UnicodeCombiningMark
  • UnicodeDigit
  • UnicodeConnectorPunctuation

UnicodeLetter ::

  • Unicode 类别中的任何字符“大写字母 ( Lu )”、“小写 > 字母 ( Ll )”、“大写字母 ( Lt )”、“修饰符字母 ( Lm )”、“其他字母 ( Lo )”或“字母”数(Nl)”。

UnicodeCombiningMark ::

  • Unicode 类别“非间距标记 ( Mn )”或“组合间距标记 ( Mc )”中的任何字符

UnicodeDigit ::

  • Unicode 类别“十进制数 ( Nd )”中的任何字符

UnicodeConnectorPunctuation ::

  • Unicode 类别“连接器标点符号 ( Pc )”中的任何字符

如您所见,它需要某些类别的任何字符。

我需要拥有所有这些可能的字符,所以我的第一步是在这个 Unicode 5.0图表上找到“连接器标点符号” ,但是有 0 个匹配,我相信我做错了。那么有人可以帮助我吗?

Cha*_*uff 6

Unicode 提供了此工具来确定字符集。它使用带有包含在[::].

对于你想要做的 Unicode 5 中的所有字符[:age=5.0:]

其余的是“一般类别”(gc)。因此,例如[:age=5.0:]&[:gc=Lu:]将找到 Unicode 5 中的所有大写字母(gc=L通常会找到所有字母)。

对于 IdentifierStart,您需要[:age=5.0:]&[[:gc=L:][:gc=Nl:]\$_]. 对于 IdentifierPart,您需要[:age=5.0:]&[[:gc=L:][:gc=Nl:][:gc=Mn:][:gc=Mc:][:gc=Nd:][:gc=Pc:]\$_].

Unicode 还具有称为 ID_Start 和 ID_Continue 的属性,但它们不包含与您的规范相同的字符。

这里也是所有 Unicode 字符属性的概述。