Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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,这是javascript中的正则表达式 var foo = RegExp("^https?:\/\/(\w+\.)*youtube\.([a-zA-Z0-9])+"); 将匹配如下字符串:[下面的语句返回true] foo.test("http://www.youtube.com"); foo.test("https://www.youtube.com"); foo.test("http://youtube.com"); 但如果表达式为: var foo_fail = RegExp("^ht

这是javascript中的正则表达式

var foo = RegExp("^https?:\/\/(\w+\.)*youtube\.([a-zA-Z0-9])+");
将匹配如下字符串:[下面的语句返回true]

foo.test("http://www.youtube.com");
foo.test("https://www.youtube.com");
foo.test("http://youtube.com");
但如果表达式为:

var foo_fail = RegExp("^https?:\/\/(\w+\.)*youtube\.\w+");
此RegExp本应通过上述测试,但我看到: foo_失败。测试(“http://www.youtube.com"); 在chrome/firebug控制台上返回false。这应该是真的。这个表达有什么不对


如果在perl上运行类似的表达式,则返回预期的成功匹配。

w
之前缺少反斜杠:

\.\w+
此外,对于静态正则表达式,永远不要使用
[new]RegExp()
语法,而是使用正则表达式文本:

var foo=/^https?:\/\/(\w+\)*youtube\。\w+/;

w
前面缺少一个反斜杠:

\.\w+
此外,对于静态正则表达式,永远不要使用
[new]RegExp()
语法,而是使用正则表达式文本:

var foo=/^https?:\/\/(\w+\)*youtube\。\w+/;

是否要在最后一个“w”之前使用带有反斜杠的
“^https?:\/\/(\w+\)*youtube\(\w)+”
?另一个区别是
\w
周围缺少捕获组
\w
还应允许下划线和可能的非拉丁字符,因此您的正则表达式在任何方面都是不等效的。@amon:缺少捕获组?它用于
测试
,因此没有区别。谢谢。我还是考试不及格。我修改了问题。是否要在最后一个“w”之前使用带反斜杠的
“^https?:\/\/(\w+\)*youtube\(\w)+”
?另一个区别是
\w
周围缺少捕获组
\w
还应允许下划线和可能的非拉丁字符,因此您的正则表达式在任何方面都是不等效的。@amon:缺少捕获组?它用于
测试
,因此没有区别。谢谢。我还是考试不及格。我修改了问题。@user1558887:请接受我的第二条建议。当前的问题是,由于您在一个字符串中,转义字符只需去掉其反斜杠。使用正则表达式。谢谢。成功了。var foo\u fail=RegExp(“^https?:\/\/(\w+\)*youtube\.\\w+”@用户1558887:不是因为你想的原因。请接受我的建议,使用正则表达式文字。谢谢minitech。正则表达式文字可以工作。我需要理解为什么我们需要在RegExp
\\w+
中的表达式末尾有双转义,而在表达式的前面没有needed@user1558887当前位置实际上是需要的,你只是没有注意到。
\w+
无声地变成了
w+
-但这没有问题,因为您只在
www
上测试了它,它确实匹配
w+
:)
匹配任何字符,因此它们也不会导致问题,您只需要在正则表达式文本中转义前斜杠,所以这些也很好。@user1558887:请接受我的第二条建议。当前的问题是,由于您在一个字符串中,转义字符只需去掉其反斜杠。使用正则表达式。谢谢。成功了。var foo\u fail=RegExp(“^https?:\/\/(\w+\)*youtube\.\\w+”@用户1558887:不是因为你想的原因。请接受我的建议,使用正则表达式文字。谢谢minitech。正则表达式文字可以工作。我需要理解为什么我们需要在RegExp
\\w+
中的表达式末尾有双转义,而在表达式的前面没有needed@user1558887当前位置实际上是需要的,你只是没有注意到。
\w+
无声地变成了
w+
-但这没有问题,因为您只在
www
上测试了它,它确实匹配
w+
:)
匹配任何字符,因此它们也不会导致问题,您只需要在正则表达式文本中转义前斜杠,所以这些也很好。