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/

相关文章:

javascript - 无法将 prop 传递回父组件

javascript - 无法让 JavaScript RegEx 工作

ruby-on-rails - 用于验证 Google map 纬度经度的 Rails 正则表达式

html - RegEx 匹配打开的标签,XHTML 自包含标签除外

regex - 方括号和星号作为 Redis 键中的 WildCards 字符或匹配扫描

javascript - 多选下拉列表中的 Jquery

javascript - IE 8 之前的版本不支持 <option> disabled 属性。有什么解决方法吗?

Javascript:如何为 2 个对象创建 IF 语句?

javascript - 解码器链包含 html、javascript、php

python - 可变长度替换为 `re.sub()`