【发布时间】:2018-04-08 09:36:04
【问题描述】:
我正在尝试将表情符号添加到我的基于网络的聊天网站,并尝试使用 RegExp 来做到这一点。
它在某些情况下有效,但在其他情况下无效,这让我发疯。
表情符号存储在数据库中 - 我通过 AJAX json 将它们拉出并处理生成的数组,并随时替换。以下是通过 F12 开发工具得到的响应:
当 emoticon.SymbolShortcut 值设置为 ':D' 时有效,但对 ':(' 无效。
有问题的表情对象包含:
emoticon.FileLocation = '<i class="material-icons emoticon" style="font-size:16x;">sentiment_very_satisfied</i>' //我知道这不是文件位置 - 对象命名错误:)
emoticon.SymbolShortcut = ':('
var sMarkup;
var strRegEx = '';
var pText ='some text :('
$.each(emoticonArray, function (index, emoticon) {
strRegEx = emoticon.SymbolShortcut.replace(')', '[)]').replace('(', '[(]');
var regEx = new RegExp(strRegEx, "gi");
pText = pText.replace(strRegEx, emoticon.FileLocation);
});
总而言之,问题在于替换不适用于 ':(' 字符组合,但适用于 ':D'。
我希望 pText 变量 ':(' 中的字符被替换为 'sentiment_very_satisfied',但我得到的只是我提交的相同字符串,没有替换
提前致谢 - 欢迎提出所有建议。如果我能提供更多信息来解决这个最令人沮丧的难题,请大喊大叫。
【问题讨论】:
-
您遇到了什么问题? “失败”、“不起作用”没有帮助。这是如何运作的?你能指望什么?请提供MCVE (minimal complete verifiable example)。
-
您好 Wiktor,问题是替换不适用于 ':(' 字符组合,但适用于 ':D'。我希望 pText 变量中的字符 ':('替换为 'sentiment_very_satisfied',但我得到的只是我提交的相同字符串,没有替换.
-
尝试使用stackoverflow.com/a/3561711/3832970转义特殊字符
-
@Melbfella 你为什么要
'some text :(' strRegEx = emoticon.SymbolShortcut.replace(')', '[)]').replace('(', '[(]');这样做?
标签: javascript regex