正则表达式导致浏览器崩溃?

时间:2015-02-12 23:01:42

标签: jquery regex

我知道这已被无数次询问了,我已经检查了Stackoverflow上的几乎所有答案,但是我无法让这个答案正常工作。

当用户在我的网站上输入图像的URL时,我想在将图像附加到DOM之前检查URL是否有效。

以下是我目前正在使用的内容:

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);
}

这种情况一直很好,直到我尝试在文本字段中输入以下网址,它只会让整个浏览器崩溃!

http://i.dailymail.co.uk/i/pix/2015/02/11/2595F03200000578-2949888-image-a-64_1423695120362.jpg

我知道URL工作正常,我创建了一个JSFiddle来测试它 http://jsfiddle.net/Lg0an1hz/

现在尝试将网址输入同一小提琴 http://jsfiddle.net/Lg0an1hz/1/

的更新版本

我的整个浏览器都崩溃了!

任何人都可以请我提供正确的正则表达式以确保输入网址。事实上,我真的需要检查用户输入的内容是以http://https://还是www开头的。我不认为除非有人知道更好,否则任何其他网站都会启动。

1 个答案:

答案 0 :(得分:2)

试试这个< jsfiddle> :

function isValidURL(textval) {
 var urlregex = new RegExp("^(http[s]?:\\/\\/(www\\.)?|ftp:\\/\\/(www\\.)?|www\\.){1}([0-9A-Za-z-\\.@:%_\+~#=]+)+((\\.[a-zA-Z]{2,3})+)(/(.)*)?(\\?(.)*)?");

  return urlregex.test(textval);
}