【发布时间】:2018-08-06 11:40:46
【问题描述】:
var 正则表达式 = /ab*c/; console.log(regex.test('abac'));
这个 javascript 正则表达式使用给定的输入输出 true 到控制台。但是根据我对正则表达式的理解,它应该输出false。当我将“a”更改为任何其他字母时,它会返回 false。
我希望模式匹配:ac、abc、abbc、abbbc 等。 请有人帮忙解释一下,或者这是javascript编译器中的错误吗?我在 java 和 python 中尝试了相同的代码,它们返回 false。
【问题讨论】:
-
这不是错误;该模式确实与您的测试字符串中的 ac 匹配
-
你的正则表达式不强制匹配部分的开始或结束,所以因为
/ab*c/匹配子字符串"ac",它返回true。尝试强制执行起点和终点。例如:/^ab*c$/。 -
而abac包含ac,不是吗?
-
我还要指出 python 的正则表达式的工作方式完全相同;
re.search('ab*c', 'abac')返回一个匹配项,所以我不清楚你是如何得到这在 python 中返回 false 的 -
友情提示:责怪 JavaScript 的编译器应该是最后的手段......
标签: javascript