Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中使用括号验证URL_Javascript_Regex - Fatal编程技术网

在javascript中使用括号验证URL

在javascript中使用括号验证URL,javascript,regex,Javascript,Regex,全部- 我正在使用下面的代码(在线获取)验证URL。然而,URL“http://www.yahoo.com?srch=news1&Network=[cnn]“由于URL变量网络中的括号,无法返回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]

全部-

我正在使用下面的代码(在线获取)验证URL。然而,URL“http://www.yahoo.com?srch=news1&Network=[cnn]“由于URL变量网络中的括号,无法返回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;
}

这是因为
[
]
在URL中不是有效字符。浏览器将自动将其转换为
分别为
%5B
%5D
,服务器将在将其传递给引擎之前将其静默转换回


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

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


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

更好的解决方案是在正则表达式中包含方括号。在正则表达式末尾的“?”后面添加“([.])*”是否有帮助?可能相关:您在哪里找到此正则表达式?匹配十六进制数字的部件中存在严重错误:
[a-fA-f\d]
应为
[a-fA-f\d]
。更好的是,您可以将其缩短为
[a-f\d]
,并设置不区分大小写的标志。更好的解决方案是在正则表达式中包含方括号。不要在正则表达式末尾的“?”后面添加“([.])*”有帮助吗?可能相关:您在哪里找到此正则表达式?匹配十六进制数字的部件中存在严重错误:
[a-fA-f\d]
应为
[a-fA-f\d]
。更好的是,您可以将其缩短为
[a-f\d]
,并设置不区分大小写的标志。迂腐的说明:根据RFC3986;,它们不是无效的,而是“保留的”)谢谢,我将尝试更新代码以转义字符。我更新代码以转义URL中的括号,但似乎不起作用。这里是指向JSFIDLE Pedantic的链接:根据RFC3986;,它们不是无效的,而是“保留的”。)谢谢,我将尝试更新代码以转义字符。我更新代码以转义URL中的括号,但似乎不起作用。这里是指向JSFIDLE的链接