Javascript 正则表达式采用 {{}} 之间的字符串,但排除那些包裹在 <span> 中的字符串

Javascript regexp take strings between {{}} but excluse those wrapped in <span>

我想使用正则表达式来包装 {{ }} 之间的所有字符串,而不是 <span class="myclass">{{ }}</span>.

之间的字符串

我想我需要排除 <span class="myclass">{{ }}</span> 但是当我尝试使用它时:

text = text.replace(/(!\<span class=\"myclass\"\>.*?<\/span>)|(\{\{.*?\}\})/g, '<span class="myclass"></span>');

它还需要 <span class="myclass">{{ }}</span> 个元素。 我做错了什么?

文本示例:

<span class="myclass">{{$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$}}</span>

<p>{{$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$}}</p>

<p>{{any text}}</p>

正则表达式的第二部分(在管道之后)(\{\{.*?\}\}) 匹配 {{}} 之间的所有内容,无论它是否在跨度之间。您需要将其包装在不匹配的跨度正则表达式条件之间。

正则表达式必须是我 /^(?!<span class=\"myclass\"\>).*(\{\{.*?\}\}).*(?!<\/span>)$/g:

  • (\{\{.*?\}\}) 将 select {{}} 之间的所有内容,但它封装在完成工作的跨度的负前瞻之间

您可以在这里进行测试:https://regex101.com/r/rY2cS4/5