Javascript RegEx失败(有时)

时间:2018-04-08 09:36:04

标签: javascript regex

我试图将表情符号添加到我的基于网络的聊天网站,并尝试使用RegExp来执行此操作。

它在某些情况下有效,但在其他情况下无效,而且它让我发疯。

表情符号存储在一个数据库中 - 我通过AJAX json将它们拉出来并通过生成的数组进行处理,然后替换它。以下是通过F12开发工具的响应:

arrayVisual

当表情符号.SymbolShortcut值设置为':D'时,它可以正常工作,但不适用于' :('。

有问题的表情符号对象包含:

emoticon.FileLocation = '<i class="material-icons emoticon" style="font-size:16x;">sentiment_very_satisfied</i>' //我知道这不是文件位置 - 坏对象命名:)

表情符号.SymbolShortcut =&#39;:(&#39;

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);

});

总而言之,问题是替换不适用于&#39;:(&#39;字符组合,但确实适用于&#39;:D&#39;。

我希望pText变量中的字符&#39;:(&#39;替换为&#39; sentiment_very_satisfied&#39;,但我得到的所有字符都是我提交的字符串,没有替换由

提前致谢 - 欢迎所有和任何建议。如果我能提供更多信息以解决这个最令人沮丧的难题,请大声说出来。

1 个答案:

答案 0 :(得分:-1)

更新了答案,同时考虑了OP的流程:

&#13;
&#13;
var pText ='some text :('

strRegEx = `:(`.replace(')', '\\)').replace('(', '\\(');
var regEx = new RegExp(strRegEx, "i");
pText = pText.replace(regEx,`<i class="material-icons emoticon" style="font-size:16x;">sentiment_very_satisfied</i>`);
console.log(pText);
&#13;
&#13;
&#13;