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

标签 javascript regex

我知道这个问题已经被问了很多次,但我找不到解决方案。我有一些笑脸,每个笑脸都有使用 replace() 呈现为笑脸的代码,但我收到语法错误,我不知道为什么以及如何将我的代码 :/ 呈现为笑脸

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

最佳答案

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

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

基于 jonatjano精彩的推演,我觉得你应该在正则表达式中多加一点,以免出现干扰URL这样的灾难。

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

上面通过 negative-lookahead 确保 :// 匹配.

关于javascript - 如何在 JavaScript 中使 replace() 全局化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51637223/

相关文章:

javascript - 使用 javascript 进行 Google Analytics 事件跟踪

regex - 如何匹配不在段落末尾的句号?

java - 匹配多语言数字的正则表达式不检测中文数字

python - 使用 Python 重命名目录中的所有文件

php - 正则表达式匹配 2 个或更多单词

javascript - 从 ascx 代码隐藏文件调用 Aspx javascript 函数

javascript - 在 React 中使用 setState 每帧更新一次 Dom

javascript - 如何使用按钮在帖子文本之间切换

javascript - 在 html 元素中内联按键以捕获输入

r - 从 R 中的字符串向量匹配单词