javascript - JS 正则表达式替换 - 替换随机字符串周围的固定文本

标签 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>并且能够将它与红色的区分开来。我必须在两端采用这个绿色跨度,并将其替换为固定字符串,但以某种方式保留两个标签之间的任何文本。

我发誓我已经查了很多资料,但不知道如何使用正则表达式找到这个问题的解决方案。

最佳答案

这应该可以解决问题

替换

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

<tagA>$1</tagA>

并对值为红色的类执行类似的操作

更新1

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

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

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

更新2

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

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

关于javascript - JS 正则表达式替换 - 替换随机字符串周围的固定文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31958748/

相关文章:

Javascript 搜索和替换

javascript - 如何将 @media 打印样式应用于 ckeditor 实例?

javascript - 获取谷歌索引的动态文本

ruby - 正则表达式,如何精确匹配

python - 按单词拆分(不区分大小写)

python - 如何从列表列表中删除符合特定条件的所有元素?

javascript - 如何使用 Handlebars 解码 HTML 实体

javascript - 按键值过滤和分组

javascript - ajax 成功时重置所有字段(表单)

regex - 空白字符正则表达式 chrome/nodejs