gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 08:27:31 25 4
gpt4 key购买 nike

例如,如何从连接器标点符号 (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:]

其余为“一般类别”(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 字符属性的概述。

关于javascript - 如何从特定类别中获取所有 Unicode 字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43150498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com