【发布时间】:2018-04-10 04:28:12
【问题描述】:
我正在尝试编写一个正则表达式(用于 JavaScript 的正则表达式引擎),我可以使用它在文本中查找和替换冒号内的表情符号名称。就像在 Slack 或 Discord 中输入 :smiley-face: 时一样,它会在您提交聊天时替换它。我只针对文本节点,所以我不需要担心文本中的其他 html。
是否可以编写一个可以匹配以下所有规则的正则表达式? (用等宽块突出显示的文本 = 正则表达式正匹配)
:any-non-whitespace::text1:sample2::@(1@#$@SD::s::nospace::inbetween:因为中间有2个冒号:nospace:middle:nospace:
我从这样的东西开始,但它不完整
/:(?!:)\S+:/gim
我正在尝试考虑这样做可能发生的所有特殊情况。可能是我想多了。
涉及到很多 Twitch 表情,所以我不能使用 emoji Unicode 字符。正则表达式将找到匹配项并替换为标签
【问题讨论】:
-
我不太清楚你的规则,请为你的每条规则举几个例子
-
您的第二个示例不应被允许作为有效的表情符号格式。这样会更容易。
-
你可以试试
:[^:\s]*(?:::[^:\s]*)*:。与:(?:[^:\s]|::)*:相同,但效率更高。 -
@chrisz 实际上 OP 不需要任何东西。为什么要修改 OP 要求?
-
Fransisc0,我将 chrisz 所做的更改回滚到您的原始帖子。请检查我的建议,让知道是否可行。
标签: javascript regex emoji