У меня есть регулярное выражение, как это:JS RegExp не захватить матч
/(?:<script\s+[^>]*?src="([^"]+)"[^>]*><\/script>)|(?:<link\s+[^>]*?href="([^"]+)"[^>]*>)/g
Я хочу, чтобы заменить «SRC» в <script>
тег, или «HREF» в <link />
тега JavaScript с этим регулярным выражением.
код так:
html.replace(/(?:<script\s+[^>]*?src="([^"]+)"[^>]*><\/script>)|(?:<link\s+[^>]*?href="([^"]+)"[^>]*>)/g, function(m, n) {
return m.replace(n, 'other url');
}
Он работает отлично с <script>
тег, но не связать тег. поскольку regexp по-прежнему устанавливает первое совпадение в ([^ "] +) в аргументы, так что параметр« n »не определен, поскольку он не соответствует тегу <script>
.Если регулярное выражение соответствует тегу <link>
, код должен быть модифицирована для:
html.replace(/(?:<script\s+[^>]*?src="([^"]+)"[^>]*><\/script>)|(?:<link\s+[^>]*?href="([^"]+)"[^>]*>)/g, function(m, n) {
return m.replace(arguments[ 2 ], 'other url');
}
есть ли способ, чтобы сделать регулярное выражение не захватить первый матч, если он не соответствует <script>
тега
спасибо. Я знаю, как решить эту проблему. На самом деле я хочу знать что-то о regexp – LCB
@LCB: ОК. Я отредактировал свой ответ, чтобы предоставить вам «минимальное исправление». Хотя это вообще не имеет никакого отношения к регулярному выражению! – ruakh