代码之家  ›  专栏  ›  技术社区  ›  Ariod

JavaScript正则表达式问题

  •  0
  • Ariod  · 技术社区  · 15 年前

    pattern = new RegExp('^bla*a', 'i');
    console.debug(pattern.exec('blatr'));
    

    运行此命令后,输出为[“bla”]。 我解释这个正则表达式的方式是:给我找一个以“bla”开头,以“a”结尾的字符串,中间有尽可能多的字符。在本例中,“blatr”不应该与正则表达式匹配,但它确实匹配。

    谢谢

    3 回复  |  直到 15 年前
        1
  •  4
  •   aditya    15 年前

    “*”表示前面字符的{0、}或“0或更多”。你想做的应该是

    ^bla.*a$
    

    :错过了问题前面的“以a结尾”部分。

        2
  •  0
  •   heijp06    15 年前

    您的正则表达式与字母匹配 bl 在行的开头,后跟零或更多 a 是的,然后是一个 A. (相当于一个或多个 A. 的)后面可能有字符。 blatr

    '^bla.*a'

    这个 * 表示将上一个字符重复零次或多次

        3
  •  0
  •   shuckster    15 年前

    这个 a* A. 零次或多次,而不是字符串 布拉

    new RegExp('(^bla){1}.+a$', 'i');
    

    在匹配字符串开头的表达式中使用+没有意义。另外,既然你说要匹配中间的任何字符 布拉 A. 在测试结束后,您需要使用a+。

    编辑: 嗯哼,似乎一个答案也不需要括号,正如其他答案所示。自我提示:停止设计你的正则表达式,并在发布答案之前测试它们:P这很好:

    new RegExp('^bla.+a$', 'i');