Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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/8/mysql/65.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 正则表达式允许空格_Javascript_Regex - Fatal编程技术网

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:我的问题是为什么正则表达式会在正则表达式模式的末尾添加
$
。在第一个正则表达式中,由于没有考虑精确匹配,所以您正在进行部分匹配。因此,一旦找到匹配项,发动机就会满意。相反,用输入字符串开头和输入字符串结尾锚(
^
&
$
)封闭整个正则表达式意味着从开头开始的精确匹配,应该在输入字符串结尾结束,否则将失败。