繁体   English   中英

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

[英]JS Regex replacement - replace fixed text around random string

鉴于此文本:

<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>

并为该类执行类似的操作,其值为red

更新1

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

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

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

更新2

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM