JS Regex替换 - 替换随机字符串周围的固定文本

时间:2015-08-12 07:31:02

标签: javascript regex

鉴于此文:

<span class='green'>foobar</span> something <span class='red'>fizzle</span>

我需要以某种方式达到这个目的:

<tagA>foobar</tagA> something <tabB>fizzle</tagB>

我基本上必须匹配<span class='green'>*anything*</span>,并且能够将它与红色区分开来。我必须在两端采用这个绿色跨度并用固定的字符串替换它,但不知何故保留两个标签之间的任何文本。

我发誓我已经看了很多,但不知道如何使用正则表达式找到解决方案。

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题

替换

<span class='green'>(.*?)</span>

使用

<tagA>$1</tagA>

使用值为红色的

为类做类似的事情

更新1

对反馈的回应“如果某个内容包含换行符怎么办?”

如果我没记错,JavaScript不支持“单行模式”/ Dot匹配换行符。

<span class='green'>([\s\S]*?)</span>

更新2

这个经过调整的正则表达式允许

<span\s+class\s*=\s*['"]green['"]\s*>([^>]*)</\s*span\s*>
  • html规范允许的空格
  • 接受属性值的单引号和双引号
  • 使用一个否定的字符类匹配标记之间的值,该字符类是合格的贪婪,通常会带来更好的性能,并且也受JavaScript支持