Javascript 正则表达式允许空格
对于以下正则表达式:Javascript 正则表达式允许空格,javascript,regex,Javascript,Regex,对于以下正则表达式: var regex = new RegExp("^(www\\.)?[0-9A-Za-z-\\.@:%_\+~#=]+(\\.[a-zA-Z]{2,})+(/.*)?(\\?.*)?"); 我不明白为什么字符串“www.google.com”通过了正则表达式测试。当我这样做的时候: var regex = new RegExp("^(www\\.)?[0-9A-Za-z-\\.@:%_\+~#=]+(\\.[a-zA-Z]{2,})+(/.*)?(\\?.*)?$");
var regex = new RegExp("^(www\\.)?[0-9A-Za-z-\\.@:%_\+~#=]+(\\.[a-zA-Z]{2,})+(/.*)?(\\?.*)?");
我不明白为什么字符串“www.google.com”
通过了正则表达式测试。当我这样做的时候:
var regex = new RegExp("^(www\\.)?[0-9A-Za-z-\\.@:%_\+~#=]+(\\.[a-zA-Z]{2,})+(/.*)?(\\?.*)?$");
i、 e.在正则表达式字符串的末尾添加$可以防止上面的字符串传递,这正是我想要的
我试图在网上找到一个“模拟器”来帮助我弄清楚正则表达式是如何匹配的,但没有找到多少帮助
www.google.com
通过测试,因为www.
与[0-9A-Za-z-\.@:%\+~\=]+
匹配,并且
goo
由(\.[a-zA-Z]{2,})+
匹配。相反,(www\\)?
,最后两个组是可选的,因此即使它们不匹配,正则表达式也满足要求,因此无需进一步匹配gle.com
通过添加
$
,正则表达式不再匹配,因为空格未与任何子表达式匹配。www.google.com
通过测试,因为www.
与[0-9A-Za-z-\@:%\u\+~\ 35;=]+
匹配
goo
由(\.[a-zA-Z]{2,})+
匹配。相反,(www\\)?
,最后两个组是可选的,因此即使它们不匹配,正则表达式也满足要求,因此无需进一步匹配gle.com
通过添加
$
,正则表达式不再匹配,因为空格未与任何子表达式匹配。您的问题是什么@彼得罗尔森:是的,但是为什么正则表达式要在正则表达式模式的末尾添加$
。它不应该仍然匹配gle.com
模式。你确定吗@PeterOlson@revo:我的问题是为什么正则表达式会在正则表达式模式的末尾添加$
。在第一个正则表达式中,由于没有考虑精确匹配,所以您正在进行部分匹配。因此,一旦找到匹配项,发动机就会满意。相反,用输入字符串开头和输入字符串结尾锚(^
&$
)包围整个正则表达式意味着从开头开始的精确匹配,应该在输入字符串结尾结束,否则它会失败。你的问题是什么@彼得罗尔森:是的,但是为什么正则表达式要在正则表达式模式的末尾添加$
。它不应该仍然匹配gle.com
模式。你确定吗@PeterOlson@revo:我的问题是为什么正则表达式会在正则表达式模式的末尾添加$
。在第一个正则表达式中,由于没有考虑精确匹配,所以您正在进行部分匹配。因此,一旦找到匹配项,发动机就会满意。相反,用输入字符串开头和输入字符串结尾锚(^
&$
)封闭整个正则表达式意味着从开头开始的精确匹配,应该在输入字符串结尾结束,否则将失败。