Я знаю, что это было задано бесчисленное количество раз, и я проверил почти все ответы на Stackoverflow, но я не могу заставить его работать правильно.Regex заставляет браузер сбой?
Когда пользователь вводит URL-адрес изображения на моем сайте, я хочу проверить, действительно ли URL-адрес до добавления изображения в DOM.
Вот что я использую в настоящее время:
function isValidURL(textval) {
var urlregex = new RegExp("^(http|https|ftp)\://([a-zA-Z0-9\.\-]+(\:[a-zA-Z0-9\.&%\$\-]+)*@)*((25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9])\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[1-9]|0)\.(25[0-5]|2[0-4][0-9]|[0-1]{1}[0-9]{2}|[1-9]{1}[0-9]{1}|[0-9])|([a-zA-Z0-9\-]+\.)*[a-zA-Z0-9\-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|co\.uk|[a-zA-Z]{2}))(\:[0-9]+)*(/($|[a-zA-Z0-9\.\,\?\'\\\+&%\$#\=~_\-]+))*$");
return urlregex.test(textval);
}
Это работает отлично на некоторое время, пока я не попытался ввести следующий URL в текстовое поле, и он просто продолжает разбивать весь браузер!
http://i.dailymail.co.uk/i/pix/2015/02/11/2595F03200000578-2949888-image-a-64_1423695120362.jpg
Я знаю, что URL работает отлично, и я создал JSFiddle, чтобы проверить его здесь http://jsfiddle.net/Lg0an1hz/
Теперь попробуйте ввести URL в этой обновленной версии одного и того же скрипку http://jsfiddle.net/Lg0an1hz/1/
Мои сбои всего браузера!
Может ли кто-нибудь указать мне правильное регулярное выражение, чтобы убедиться, что URL-адрес введен. На самом деле, мне просто нужно проверить, что независимо от введенного пользователем начинается с http://
, https://
или www
. Я не думаю, что любое другое начало URL-адреса, если кто-то не знает лучше.
Кажется, что это выражение не является наиболее эффективным и может привести к [катастрофический откат] (http://www.regular-expressions.info/catastrophic. HTML). – Sam
Я понятия не имею, какое регулярное выражение я должен использовать. Я только что скопировал этот ответ из другого ответа здесь –