我有一个匹配表情符号的JavaScript regex。如何使用ngx.re.match()
匹配相同的字符,(\u00a9|\u00ae|[\u2000-\u3300]|\ud83c[\ud000-\udfff]|\ud83d[\ud000-\udfff]|\ud83e[\ud000-\udfff])
是nginx Web服务器的OpenResty库的一部分。
这是在JS中匹配emojis的原始正则表达式:
\x{####}
在PCRE中,\u####
可以用作JavaScript的[\xA9\xAE\x{2000}-\x{3300}\x{1F000}-\x{1FBFF}]
。
其次,JavaScript模式旨在与使用UTF-16编码的代码点匹配。但由于我们将在PCRE中匹配代码点本身,我们需要“解码”代理对。
完成这两项更改后,我们得到:
\p{Block=Emoticons}
(我不知道Lua,所以我会留下它来提供产生这个字符串的字符串文字。)
请注意,您的模式比大多数人认为的表情符号更匹配。表情符号出现在“表情符号”块中。该块(当前)跨越代码点U + 1F600到U + 1F64F。在Perl中,您可以使用\p{Emoticons}
甚至只是[\x{1F600}-\x{1F64F}]
来匹配这些,但这些似乎不受PCRE的支持。为了匹配表情符号,您需要使用以下内容:
qazxswpoi