在javascript中使用括号验证URL

时间:2013-04-23 19:19:27

标签: javascript regex

全部 -

我正在使用以下代码(在线获取)来验证网址。但是,由于URL变量Network中的括号,URL“http://www.yahoo.com?srch=news1&Network=[cnn]”无法返回true。是否可以更新正则表达式以包括括号,或者我应该循环URL变量并删除括号?

 var webSiteUrlExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;

if (webSiteUrlExp.test(url)) {
      console.log("true");
      return true;
}
else {
     console.log("false");
      return false;
}

1 个答案:

答案 0 :(得分:1)

这是因为[]不是网址中的有效字符。浏览器会默默地将它们转换为
分别为%5B%5D,服务器会在将其传递给引擎之前将其静默转换回来。

如果要验证字符超出正常范围的URL,则应首先通过某种转义函数运行它。