2016-08-24 8 views
0

Я пытаюсь заменить var тегов с атрибутом, чтобы они завернуты в квадратных скобкахКак изменить регулярный выражение, чтобы быть не жадными (JS)

data.replace(/<var .*?="">(\d+)<\/var>/ig, '[[[$1]]]');

, но это не будет работать там, если являются множественными 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>

+0

так '' не должен быть заменен? – moped

+0

Нет, потому что у него нет содержимого внутри тегов –

+1

, но может 'id' на самом деле иметь контент внутри? в противном случае ' (\ d +) <\/var>' будет работать нормально, я думаю – moped

ответ

2

с помощью этого <var [^=]*="">(\d+)<\/var>

regex101 - 1


в случае, если было бы больше, чем один атрибут или атрибут имеет значение, как num="something" то выше, не будет работать, вместо того, чтобы использовать эту <var([^=]*="[^"]*")*>(\d+)<\/var> с [[[$2]]] для замены.

regex101 - 2

1

Изменение .*? быть [^=">]*?. Несмотря на то, что он не жадный, вы позволяете ему захватывать слишком много.

 Смежные вопросы

  • Нет связанных вопросов^_^