javascript - 使用正则表达式和 JavaScript 将在字符串中多次出现的单个模式包装起来

标签 javascript regex

我有这个字符串:

whatever [that's the pattern] by [pattern again] before [whatever].

我希望将括号 [] 及其内部的所有内容都包含在一个跨度中,如下所示:

whatever <span>[that's the pattern]</span> by </span>[pattern again]</span>
before <span>[whatever]</span>.

我已经尝试过

re = new RegExp(/\[(.*)\]/);
var newString =  oldString.replace(re, "<span>$1</span>");

但这会返回:

whatever <span>[that's the pattern] by [pattern again] before [whatever]</span>.

在有人向我开枪之前 why shouldn't I use regex to parse HTML ,我这样做的原因是因为该字符串在网页上回显,并且括号和其中的文本具有不同的颜色。我需要将它们包裹在一个跨度中才能设计它们的样式。如果有更好的解决方案,我愿意。

非常感谢!

最佳答案

除了设置全局标志之外,您还需要使正则表达式变得懒惰:

var newString = oldString.replace(/\[(.*?)\]/g, "<span>[$1]</span>")
                                        ^    ^

关于javascript - 使用正则表达式和 JavaScript 将在字符串中多次出现的单个模式包装起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16902481/

相关文章:

sql - 正则表达式检测 SQL 注入(inject)

python - 如何正确使用Python的正则表达式库的for循环?

java - 如何使用正则表达式来检查 Java 中的字符串是否至少以一位数字结尾?

javascript - 仅在页面加载时检索一次数据

javascript - 如何添加所有页面收费并添加扩展动态元素后执行的javascript

javascript - img.onload 在 new Image() 声明后拒绝触发

javascript - 输入字段占位符属性 ie7+

javascript - 在隐藏元素中初始化 Disqus 注释会导致 FF 14.0.1 出现问题

php - 剥离一切,除了 PHP 中的字母数字和欧洲字符

正则表达式,分组,查找最后一个匹配项