如何将正则表达式更改为非贪婪 (JS)
How to alter a regex to be non-greedy (JS)
我正在尝试用属性替换 var
标签,以便将它们括在方括号中
data.replace(/<var .*?="">(\d+)<\/var>/ig, '[[[]]]');
但是如果有多个 var
标签,这将不起作用。例如,
<var id-0=""></var> responds <span id-1="">in <var num="">1</var> days</span>
将导致
[[[1]]] days</span>
但我需要的结果是
<var id-0=""></var> responds <span id-1="">in [[[1]]] days</span></strong>
将 .*?
更改为 [^=">]*?
。即使它不贪心,您也允许它捕获太多。
使用这个<var [^=]*="">(\d+)<\/var>
如果有多个属性或属性的值类似于 num="something"
那么上面的方法将不起作用,而是使用此 <var( [^=]*="[^"]*")*>(\d+)<\/var>
用 [[[]]]
替换。
我正在尝试用属性替换 var
标签,以便将它们括在方括号中
data.replace(/<var .*?="">(\d+)<\/var>/ig, '[[[]]]');
但是如果有多个 var
标签,这将不起作用。例如,
<var id-0=""></var> responds <span id-1="">in <var num="">1</var> days</span>
将导致
[[[1]]] days</span>
但我需要的结果是
<var id-0=""></var> responds <span id-1="">in [[[1]]] days</span></strong>
将 .*?
更改为 [^=">]*?
。即使它不贪心,您也允许它捕获太多。
使用这个<var [^=]*="">(\d+)<\/var>
如果有多个属性或属性的值类似于 num="something"
那么上面的方法将不起作用,而是使用此 <var( [^=]*="[^"]*")*>(\d+)<\/var>
用 [[[]]]
替换。