Нужно написать функцию, проверяющую url на валидность. Перерыл весь интернет, но пока максимально адекватное решение нашет
здесь. Но и оно не идеально.
Основная функция и регулярка выглядят так:
function checkUrl(url) {
const pattern = /(http|https):\/\/([a-z0-9-]+((\.[a-z0-9-]+)+)?)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
return pattern.test(url);
}
В большинстве случаев работает норм, но на таких кейсах спотыкается:
checkUrl('https://google') // true, а должно быть false
checkUrl('https://www.google') // true, а должно быть false
checkUrl('https://wwww.google.com/') // true, а должно быть false
checkUrl('www.google.com') // false, а должно быть true
Как можно доработать регулярку, чтобы вышеупомянутые ситуации обрабатывались правильно?
UPD: С двумя первыми примерами, наверное, можно не заморачиваться, т.к. в отдельных ситуациях строки, построенные по такому принципу, являются валидными урлами.
Третий пример - тоже неактуален, не знал, что символов w может быть больше 3-х
Остается актуальным 4 пример.