【问题标题】:Javascript Regular Expressions /ab*c/Javascript 正则表达式 /ab*c/
【发布时间】: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


【解决方案1】:

“*”表示“匹配前面的表达式 0 次或多次”。因此它将匹配任何包含“ac”的字符串(在这种情况下为 b 0 次)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2023-03-09
    • 2019-08-02
    • 2019-04-29
    • 1970-01-01
    相关资源
    最近更新 更多