Regex Lookahead.Найти слово без .min.в строке - PullRequest
1 голос
/ 05 июня 2019

Я пытаюсь заменить ссылку в html-файле на regex и nodejs.Я хочу заменить ссылки без расширения .min.js.

Например, он должен соответствовать «common.js», но не «common.min.js»

Вот что япробовал:

let htmlOutput = html.replace(/common\.(?!min)*js/g, common.name);

Я думаю, что этот негативный взгляд должен работать, но он ничего не соответствует.Любая помощь будет оценена.

Ответы [ 3 ]

2 голосов
/ 05 июня 2019

Часть (?!min)*js повреждена: вы не должны количественно определять утверждения нулевой ширины, как предпросмотры (они не потребляют текст, поэтому квантификаторы после них обрабатываются либо как ошибки пользователя, либо игнорируются).Поскольку js не начинается с min, этот просмотр даже без квантификатора является излишним.

Если вы хотите сопоставить строку с целым словом common, то иметь любые символы и заканчиваться .js но не .min.js вам нужно

/\bcommon\b(?!.*\.min\.js$).*\.js$/

См. демонстрационную версию regex .

Подробности :

  • \b - граница слова
  • common - подстрока
  • \b - граница слова
  • (?!.*\.min\.js$) - сразу вправо, не должно бытьлюбые 0 или более символов, за которыми следует .min.js в конце строки
  • .* - любые 0 или более символов
  • \.js - подстрока .js
  • $ - конец строки.
1 голос
/ 05 июня 2019

Здесь мы, вероятно, можем найти простое выражение для передачи любого символа, кроме новых строк и . после слова common, за которым следует .js:

common([^\.]+)?\.js

Демо

RegEx Circuit

jex.im визуализирует регулярные выражения:

enter image description here

0 голосов
/ 05 июня 2019

Конечное регулярное выражение, которое я использую: /\bcommon[^min]+js\b/g

Это найдет слово, общее с любым количеством символов послесловия, за исключением случаев, когда эти символы содержат слово min и заканчиваются на js, что позволяет мнечтобы заменить скрипты на моей html-странице, например:

script src = "~ / dist / common.js"

ИЛИ

script src = "~ / dist / common.9cf5748e0e7fc2928a07.js "

Спасибо Виктору Стрибиеву за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...