Javascript 正则表达式测试
这是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
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+
:)
匹配任何字符,因此它们也不会导致问题,您只需要在正则表达式文本中转义前斜杠,所以这些也很好。