正则表达式在javascript上不匹配但在其他语言上匹配

时间:2014-02-02 15:14:23

标签: javascript regex

所以我现在一直在运行regexp一段时间,并且一直使用RegEx101来测试我的模式,但它从未失败过(还)。

所以我试图通过正则表达式将android Emojicons字符串替换为适当的HTML图像tage,代码似乎在上面的网站中没有问题匹配,甚至可以与PHP一起使用,但不知何故,它根本不匹配在javascript中...所以这是我的代码:

function loadEmojisInMessage(message) {
    var regExp = /({emoji:(.*?)})/g; //var regExp = new RegExp("({emoji:(.*?)})","g");
    message.replace(regExp, '<img src="emojis/emoji_$2.png" id="$2" class="emojicon" />').toString();
    return message;
}

起初我以为我做错了什么,所以我把代码更改为此,只是为了测试

function loadEmojisInMessage(message) {
    var regExp = /({emoji:(.*?)})/g; //var regExp = new RegExp("({emoji:(.*?)})","g");
    message.replace(regExp, 'test?').toString();
    return message;
}

但即使这根本不会取代! (我的想法是它遇到了与字符串中的模式匹配的问题:/)

要匹配的示例字符串:

{emoji:em_1f50f}

我在这里尝试做的是用图像HTML标签替换整个字符串(上面),同时使用第二个匹配[它是URL字符串的第二个括号()]

最诚挚的问候

<小时/> 更新: 我忘了添加第一个匹配的括号,对不起!

此外,您可以测试模式here

1 个答案:

答案 0 :(得分:0)

您没有将replace()方法调用的结果分配回变量message。如果你不这样做,message保持不变。

message = message.replace(regExp, '<img src="emojis/emoji_$2.png" id="$2" class="emojicon" />');