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])/

Следующее должно работать:

       /^(https?:\/\/|\/)\w+\.[^\s]+$|^\/[^\s]*$/

Другие вопросы по тегам