如何从特定类别中获取所有 Unicode 字符?
How to get all Unicode characters from specific categories?
例如,如何从连接符标点符号 (Pc) 类别中获取代码点模式,例如 x-y\uxxxx\Uxxxxxxxxx
,用于扫描 ECMAScript 3/JavaScript 标识符?
原问题
我需要帮助来验证词法扫描器的 ECMA-262(3º edition、7.6)标识符的有效字符(代码点)。
语法引用
Identifier
::
IdentifierName
but not ReservedWord
IdentifierName
::
IdentifierStart
IdentifierName
IdentifierPart
IdentifierStart
::
UnicodeLetter
- $
- _
\ UnicodeEscapeSequence
# no need to check this
IdentifierPart
::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
UnicodeLetter
::
- any character in the Unicode categories “Uppercase letter (Lu)”, “Lowercase > letter (Ll)”, “Titlecase letter (Lt)”,
“Modifier letter (Lm)”, “Other letter (Lo)”, or “Letter number
(Nl)”.
UnicodeCombiningMark
::
- any character in the Unicode categories “Non-spacing mark (Mn)” or “Combining spacing mark (Mc)”
UnicodeDigit
::
- any character in the Unicode category “Decimal number (Nd)”
UnicodeConnectorPunctuation
::
- any character in the Unicode category “Connector punctuation (Pc)”
如您所见,它接受特定类别的任何字符。
我需要所有这些可能的字符,所以我的第一步是在这个 Unicode 5.0 chart 上找到 "Connector punctuation",但是 0 个匹配,我相信我做错了.那么有人可以帮助我吗?
Unicode 提供 this tool 来确定字符集。它使用包含在 [::]
.
中的 属性-值对的正则表达式
对于您要执行的 Unicode 5 中的所有字符 [:age=5.0:]
。
其余为"general categories"(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字符属性的总览
例如,如何从连接符标点符号 (Pc) 类别中获取代码点模式,例如 x-y\uxxxx\Uxxxxxxxxx
,用于扫描 ECMAScript 3/JavaScript 标识符?
原问题
我需要帮助来验证词法扫描器的 ECMA-262(3º edition、7.6)标识符的有效字符(代码点)。
语法引用
Identifier
::
IdentifierName
but notReservedWord
IdentifierName
::
IdentifierStart
IdentifierName
IdentifierPart
IdentifierStart
::UnicodeLetter
- $
- _
\# no need to check thisUnicodeEscapeSequence
IdentifierPart
::
IdentifierStart
UnicodeCombiningMark
UnicodeDigit
UnicodeConnectorPunctuation
UnicodeLetter
::
- any character in the Unicode categories “Uppercase letter (Lu)”, “Lowercase > letter (Ll)”, “Titlecase letter (Lt)”, “Modifier letter (Lm)”, “Other letter (Lo)”, or “Letter number (Nl)”.
UnicodeCombiningMark
::
- any character in the Unicode categories “Non-spacing mark (Mn)” or “Combining spacing mark (Mc)”
UnicodeDigit
::
- any character in the Unicode category “Decimal number (Nd)”
UnicodeConnectorPunctuation
::
- any character in the Unicode category “Connector punctuation (Pc)”
如您所见,它接受特定类别的任何字符。
我需要所有这些可能的字符,所以我的第一步是在这个 Unicode 5.0 chart 上找到 "Connector punctuation",但是 0 个匹配,我相信我做错了.那么有人可以帮助我吗?
Unicode 提供 this tool 来确定字符集。它使用包含在 [::]
.
对于您要执行的 Unicode 5 中的所有字符 [:age=5.0:]
。
其余为"general categories"(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字符属性的总览