简体   繁体   English

正则表达式错误匹配

[英]Regular Expression wrong match

I am trying a regex to validate an Url. 我正在尝试使用正则表达式来验证网址。

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

so i am getting "result" as true but i should get false as "url" contains comma. 所以我得到“结果”为真,但我应该得到假,因为“ URL”包含逗号。 Kindly help. 请帮助。

Add anchors ( ^ for beginning of a string, and $ for the end of the string): 添加锚点( ^表示字符串的开头, $表示字符串的结尾):

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

See demo 观看演示

You are getting true since your regex partly matches. 因为您的正则表达式部分匹配,所以您是对的。

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

instead. 代替。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM