Шаблон регулярного выражения / (http: \ / \ / | https: \ / \ /) [^ w {3}] / не работает - PullRequest
0 голосов
/ 28 декабря 2018

Мне нужно заменить http: // или https: // без «www» на «www».Я использую этот шаблон ниже,

/(http:\/\/|https:\/\/)[^w{3}]/

, но не работает.Вот текст, где я ищу

URL-адрес http://google.com http://www.google.com https://google.com https://google.com

https://regex101.com/r/JhMN6t/1

Заранее спасибо.

Ответы [ 5 ]

0 голосов
/ 28 декабря 2018

Вы также можете попробовать

/^(http:\/\/|https:\/\/|http:\/\/|https:\/\/)/gm

0 голосов
/ 28 декабря 2018

Попробуйте это регулярное выражение:

(https?:\/\/(?!www))

замените совпадения на:

$1www.

Нажмите для демонстрации

Объяснение:

  • https?:\/\/ - соответствует либо http:// или https://
  • (?!www) - соответствует, только если текущая позиция не соблюдаетсяwww
  • () - скобка для захвата всего совпадения в группе

Заменить все совпадение группой 1 с последующим www.

0 голосов
/ 28 декабря 2018

вы можете использовать это регулярное выражение: (http:\/\/|https:\/\/)(?!www)

(?! является негативным прогнозом, он гарантирует, что он не будет следовать тому, что указано внутри, без использования символов

https://regex101.com/r/6TEv2r/1

0 голосов
/ 28 декабря 2018

Вы используете отрицательный символьный класс [^w{3}], который не соответствует ни одному из w, {, } или 3.

Вы можете использовать отрицательный lookahead утверждать, что справа не www.и заменить на первую группу захвата, за которой следуют www и точка.

Обратите внимание, что чередование может быть сокращено до https?, что делает необязательным s использование знака вопроса.

Соответствие

const regex = /(https?:\/\/)(?!www\.)

Заменить на:

$1www.

const regex = /(https?:\/\/)(?!www\.)/g;
const str = `the url is http://google.com http://www.google.com https://google.com https://google.com`;
const subst = `$1www.`;

const result = str.replace(regex, subst);

console.log(result);
0 голосов
/ 28 декабря 2018

[^w{3}] соответствует одному символу, который не является w или { или 3 или }.

Вместо этого вы хотите использовать отрицательное прогнозное утверждение:

/https?:\/\/(?!www)/

// or maybe even
/https?:\/\/(?!www\.)/

(?!www) означает «не следует www ».

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