正则表达式允许空格

时间:2017-06-26 19:03:38

标签: javascript regex

对于以下正则表达式:

var regex = new RegExp("^(www\\.)?[0-9A-Za-z-\\.@:%_\+~#=]+(\\.[a-zA-Z]{2,})+(/.*)?(\\?.*)?");

我不明白为什么字符串"www.goo gle.com"通过了正则表达式测试。当我这样做时:

var regex = new RegExp("^(www\\.)?[0-9A-Za-z-\\.@:%_\+~#=]+(\\.[a-zA-Z]{2,})+(/.*)?(\\?.*)?$");

即。在正则表达式字符串末尾添加$可以防止上面的字符串传递,这就是我想要的。

我试过找一个"模拟器"在线帮助我弄清楚正则表达式是如何匹配但却找不到多少帮助。

1 个答案:

答案 0 :(得分:2)

www.goo gle.com通过了测试,www.[0-9A-Za-z-\\.@:%_\+~#=]+匹配 goo(\.[a-zA-Z]{2,})+匹配。相比之下,(www\\.)?和最后两组是可选的,因此即使它们不匹配也能满足正则表达式,因此无需进一步匹配gle.com

通过添加$,正则表达式不再匹配,因为空格未与任何子表达式匹配。