如何从连接器标点符号( Pc )类别获取像x-y\uxxxx\Uxxxxxxxxx
这样的代码点模式,用于扫描ECMAScript 3 / JavaScript标识符?
我需要帮助来验证词法扫描程序的ECMA-262(3º edition,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 chart,但0匹配,我相信我做错了。有人可以帮助我吗?
答案 0 :(得分:3)
Unicode提供this tool来确定字符集。它使用包含在[::]
。
对于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的属性,但它们不包含与您的规范相同的字符。
Here也是所有Unicode字符属性的概述。