javascript - 正则表达式匹配字母——包括非拉丁字母,但不包括表情符号

标签 javascript regex unicode emoji

我需要一个 javascript 正则表达式来匹配任何语言的单词,但不能匹配表情符号或任何其他字符。此处的解决方案:Regular expression to match non-English characters?匹配所有字母加上象形图和表情符号 ([^\u0000-\u007F]+)。

稍微修改一下似乎可以满足我的需要,但我不确定它的安全性如何:([a-zA-Z]|[^\u0000-\u007F\u200d-\u3299\ud83c-\udfff\ufe0e\ufe0f])+

例子: 美国🇺🇸 Österreich🇦🇹 Россия🇷🇺 ελλìδα🇬🇷

应该只匹配字母并在表情符号之前停止。不应将表情符号与字母表示相匹配,例如:1️⃣#️⃣*️⃣

相关:http://www.unicode.org/Public/emoji/5.0/emoji-variation-sequences.txt

背景信息: 我正在尝试修补此解析器:https://github.com/Khan/simple-markdown/blob/master/simple-markdown.js#L1304打破表情符号,因为目前它匹配尽可能多的文本。如果没有通过该解析器匹配/替换表情符号是有问题的。从突出显示的正则表达式中删除 \u00c0-\uffff 完成我需要的,但解析器开始分解单词。有些语言(西里尔字母)每个字母都会被打断,这对性能不利。我需要修补该正则表达式以允许字母,但不允许表情符号,或者放置一个正则表达式来捕获它前面的所有文本。

编辑:添加了一些示例

编辑:添加了语言限制

最佳答案

我在这里找到了解决方案:https://mathiasbynens.be/notes/es-unicode-property-escapes#word

本质上是 /[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}]/u 给定 Unicode 属性转义支持。

在 JavaScript 原生支持 \p 之前,您可以 transpile this regex .

关于javascript - 正则表达式匹配字母——包括非拉丁字母,但不包括表情符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44788737/

相关文章:

javascript - 当旁边的 div 被移除时,div 会继续移动

java - 有效地将不同的可能子串匹配到相同的值

javascript - 使用对象属性构造正则表达式时量词无效

unicode - ColdFusion cfmail 主题行中的特殊字符

unicode程序中的c++ wofstream问题

string - 最新的 Delphi 编译器版本和字符串类型兼容性

javascript - 如何将我的文本放在位置 :fixed and right inside of my div

javascript - CORS 请求在 Safari 中不起作用

javascript - 使用正则表达式在 JavaScript 中将格式错误的日期 yyyy-M-d 重写为 yyyy-MM-dd

regex - 匹配两个字符串之间的所有内容