正则表达式错误匹配

时间:2015-05-25 15:01:21

标签: javascript regex

我正在尝试使用正则表达式来验证网址。

var url = "https://www,google.com";
var urlRegex = /(https|http)?:\/\/(?:\w[\-\w.]+)(?:\/[\-\w+&@#\/%=~_|!:,.;]*)?(?:\?[\-A-Z0-9+&@#\/%=~_|!:,.;]*)?/i;
var result = urlRegex.test(url);

所以我得到“结果”为真,但我应该得到假,因为“url”包含逗号。 请帮助。

2 个答案:

答案 0 :(得分:2)

为字符串的开头添加锚点{^,为字符串的结尾添加$

^(https|http)?:\/\/(?:\w[\-\w.]+)(?:\/[\-\w+&@#\/%=~_|!:,.;]*)?(?:\?[\-A-Z0-9+&@#\/%=~_|!:,.;]*)?$
^                                                                                                ^

请参阅demo

答案 1 :(得分:2)

由于你的正则表达式部分匹配,你才会成真。

使用^(https|http)?:\/\/(?:\w[\-\w.]+)(?:\/[\-\w+&@#\/%=~_|!:,.;]*)?(?:\?[\-A-Z0-9+&@#\/%=~_|!:,.;]*)?$

代替。