如何在JavaScript中使replace()全局化

Sar*_*ara 1 javascript regex

我知道这个问题已被问过很多时间,但我找不到解决方案.我有一些表情符号,每个都有使用replace()呈现为笑脸的代码,但我得到语法错误,我不知道为什么以及如何将我的代码呈现:/为笑脸

txt = " Hi :/ ";
txt.replace("/\:/\/g","<img src='img/smiley.gif'>");
Run Code Online (Sandbox Code Playgroud)

Sun*_*tel 9

您的正则表达式不需要在引号中.您应该转义正确的/正斜杠(您正在逃避错误的斜杠)并分配替换,因为.replace不会修改原始字符串.

txt = " Hi :/ ";
txt = txt.replace(/:\//g,"<img src='img/smiley.gif'>");
Run Code Online (Sandbox Code Playgroud)

基于jonatjano的精彩演绎,我认为你应该在正则表达式上添加一些内容,以避免像干扰URL这样的灾难.

txt = txt.replace(/:\/(?!/)/g,"<img src='img/smiley.gif'>");
Run Code Online (Sandbox Code Playgroud)

上述确保://通过执行匹配负先行.