Javascript Regex для абсолютного и относительного URl
Есть ли регулярные выражения, которые будут проверять как абсолютный URL, так и относительный URl для Javascript.
У меня есть следующий Regex, который работает довольно хорошо для абсолютного URL, кроме той части, где он делает HTTP-часть обязательной. Я хочу это необязательно.
Вот регулярное выражение:
/(http|ftp|https):\/\/[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/;
Спасибо
2 ответа
Быстрый ответ, измененный ответ Аруна, чтобы принять '/ page', '/ page / subpage', 'page / subpage'
/(\/?[\w-]+)(\/[\w-]+)*\/?|(((http|ftp|https):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?)/gi
но на самом деле, проверить URL с помощью RegExp никогда не сложно. много крайних случаев, таких как './page', '../page' и т. д.
Тщательно проанализируйте ваши требования, запишите основные контрольные примеры, напишите RegExp, пропустите их все. и будьте осторожны с производительностью.
Пытаться
/((http|ftp|https):\/\/)?[\w-]+(\.[\w-]+)+([\w.,@?^=%&:\/~+#-]*[\w@?^=%&\/~+#-])?/;
Это делает (http|ftp|https):\/\/
(http://) часть необязательная
Этот принимает такие вещи, как:
http://example.com
https://example.com.com
/mypage
/my/page/
Но не такие вещи, как
httpa://example.com
my/page/
www
Регулярное выражение:
/(^(https?:\/\/|\/)(?:www\.|(?!www))?[^\s])/