Регулярное выражение URL Javascript начинается с www.или http (s): // - PullRequest
0 голосов
/ 29 сентября 2019

Спасибо за вашу помощь!

Я хочу преобразовать URL в строке в <a href="url">url</a>, используя javascript.

У меня есть следующее регулярное выражение:

/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/gi

, который, кажется, работает довольно хорошо для любого URL, начинающегося с http://, https://, http://www. или https://www..

Однако это не работает дляURL, начинающиеся с www: www.url.com

Как можно изменить регулярное выражение для работы со следующими параметрами:

http://
https://
http://www.
https://www.
www.

Еще раз спасибо за вашу помощь!Хорошего дня!

1 Ответ

0 голосов
/ 29 сентября 2019

Вы можете использовать чередование

(?:https?:\/\/(www\.)?|www\.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&\/=]*)

const regex = /(?:https?:\/\/(www\.)?|www\.)[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&\/=]*)/i;
const strs = ['http://example.com','https://example.com','http://www.example.com','https://www.example.com','www.example.com','example.com']

strs.forEach(str=>{
  console.log(str, '  |   ', regex.test(str))
})

Regex Demo

Если вы хотите, чтобы example.com также совпадал, вы можете сделать (?:https?:\/\/)? необязательным

(?:https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&\/=]*)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...