REGEX匹配起始和结束span标签而没有内部文本

use*_*530 1 javascript regex mootools

我使用以下RegEx在字符串中进行替换:

<\/?(span)\b(?:\s+class="highlight")?>
Run Code Online (Sandbox Code Playgroud)

但是这个正则表达式有一个缺陷...以此示例代码为例:

<p>
   Some text here
   <span class="highlight">This is highlighted</span>
   <span>This is not highlighted</span>
</p>
Run Code Online (Sandbox Code Playgroud)

我的正则表达式将匹配两个span标签,虽然我只想要一个class ="highlight"设置.如何使用RegEx实现这一目标?

PS:请不要告诉我,我不应该使用RegEx,因为我会降低你的答案,因为它是偏离主题的.这是RegEx球员的问题.

编辑:基于下面接受的答案我使用以下正则表达式进行替换注意:代码是在javascript(mootools)

var regex = new RegExp("(<span[^>]+class\\s*=\\s*(\"|')highlight\\2[^>]*>)(.*?)(</span>)",'g');
var replaced = element.get('html').replace(regex, "$3");
element.set('html', replaced);
Run Code Online (Sandbox Code Playgroud)

上面的正则表达式将在这里用"some text here"替换一些文本(没有双引号)

Ara*_*yan 5

这应该给予最大的灵活性.

(<span[^>]+class\s*=\s*("|')highlight\2[^>]*>)[^<]*(</span>)
Run Code Online (Sandbox Code Playgroud)

更新:

打开和关闭标记所需的捕获组是\ 1和\ 3.

  • 对.我深信不疑.我解开了downvote. (2认同)