首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使JavaScript中的替换()全局化

如何使JavaScript中的替换()全局化
EN

Stack Overflow用户
提问于 2018-08-01 15:32:45
回答 2查看 1.2K关注 0票数 1

我知道这个问题被问了很多次,但我找不到解决办法。我有一些笑脸,每个笑脸都有代码要用替换()表示为笑脸,但是语法错误,我不知道为什么,也不知道如何将代码:/呈现为笑脸。

代码语言:javascript
复制
txt = " Hi :/ ";
txt.replace("/\:/\/g","<img src='img/smiley.gif'>");
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-01 15:40:15

replace()的第一个参数有两个问题,它转义错误的字符,它使用的字符串似乎包含一个regex,而不是真正的RegExp

第二行应为:

代码语言:javascript
复制
txt.replace(/:\//g,"<img src='img/smiley.gif'>");

/:\//gregex。第一个和最后一个/RegExp分隔符,g是“全局”RegExp选项(String.replace()需要RegExp而不是字符串来执行全局替换)。

regex的内容是:/ (您想要找到的字符串),但是由于/RegExp中有一个特殊的含义(参见上文),所以需要转义,然后变成:\/

票数 2
EN

Stack Overflow用户

发布于 2018-08-01 15:35:43

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

代码语言:javascript
复制
txt = " Hi :/ ";
txt = txt.replace(/:\//g,"<img src='img/smiley.gif'>");

基于约纳塔贾诺的精辟推论,我认为您应该在正则表达式中添加更多内容,以避免像干扰URL这样的灾难。

代码语言:javascript
复制
txt = txt.replace(/:\/(?!/)/g,"<img src='img/smiley.gif'>");

上面的内容确保了://,而不是通过执行负前瞻来匹配

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51637223

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档