Ответ 1
Сделайте часть (ftp|http|https):\/\/
опциональной:
((ftp|http|https):\/\/)?
Я ищу регулярное выражение, которое принимает такие URL:
http://www.example.com
www.example.com
Это то, что у меня есть до сих пор, но это регулярное выражение не соответствует URL-адресам без http://
или https://
, или ftp://
:
regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
Как сделать протокол необязательным?
Сделайте часть (ftp|http|https):\/\/
опциональной:
((ftp|http|https):\/\/)?
Попробуйте это, это подтвердит URL с (http, ftp, https) или без (http, ftp, https)..
/^(?:(ftp|http|https):\/\/)?(?:[\w-]+\.)+[a-z]{3,6}$/;
Попробуйте, чтобы это подтвердило URL-адрес с или без (http, ftp, https) в верхнем и нижнем регистре, а также позволяет вам делать численные значения
/^(?:(ftp|http|https)?:\/\/)?(?:[\w-]+\.)+([a-z]|[A-Z]|[0-9]){2,6}$/gi;
Пожалуйста, смотрите https://codegolf.stackexchange.com/a/480/6593
Цитата из приведенной выше ссылки:
value = 'www.google.com';
if(/(^|\s)((https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/gi.test(value)) {
return true;
} else {
return false;
}