我正在尝试编写一个正则表达式来搜索字符串并查找包含在大括号中的单词,这些单词未包含在具有特定属性(数据占位符)的跨度标记中。
示例文本:
This is a test. Testing <span class="anything">{variable}</span> wrapped without the attribute, but this one <span data-placeholder="val">{variable}</span> is. The first should match, the second should not, and the last one should as well {variable}
到目前为止,我想出的最好的是:
/[^>]{(.)*}[^>]/g
但这有一些问题。结束 } 之后可能有也可能没有文本,因此该模式与示例文本中的最后一个实例不匹配。它也不会匹配第一个实例,我不确定如何为正则表达式的第一部分编写“匹配除此单词之外的任何内容”。
目标是转换以下实例(注意任何东西都是文字):
{variable}
<span class="anything">{variable}</span>
对此(或):
<span data-placeholder="">{variable}</span>
<span data-placeholder="" class="anything">{variable}</span>
不会中断任何已转换的现有实例。
谢谢!
编辑:使用 DOM 遍历和文本节点的正则表达式组合解决。谢谢@jonathan-m 和@frankiethekneeman!