【问题标题】:JavaScript regular expression - two [a-z] followed by three [0-9] onlyJavaScript 正则表达式 - 仅两个 [a-z] 后跟三个 [0-9]
【发布时间】:2011-05-19 02:01:25
【问题描述】:

我有一个简单的正则表达式:

[A-z]{2}[0-9]{3})$/g 在下面:

regForm.submit(function(){
  if ($.trim($('#new-usr').val()).match(/([A-z]{2}[0-9]{3})$/g)) {
    alert('No');
    return false;
  }
});

这是正确的阅读'ab123' 之类的东西会发出警报,而'ab1234' 不会。但是,'abc123' 仍在发出警报。我需要它,所以它只会在只有 2 个字母后跟三个数字时才发出警报。

【问题讨论】:

    标签: javascript regex string string-matching


    【解决方案1】:

    改用/^[A-z]{2}[0-9]{3}$/g

    您需要指定需要匹配整个字符串。否则,您将匹配突出显示的部分:abc123

    (我省略了(),因为您并不需要该组。)

    顺便说一句,您确定要[A-z] 而不仅仅是[A-Za-z]

    【讨论】:

      【解决方案2】:

      字符类[A-z] 可能不是您需要的。

      为什么?

      字符类[A-z] 匹配一些非字母字符,例如[] 等。

      JS fiddle link 来证明这一点。

      This W3school tutorial推荐不正确。

      如果您只需要小写字母,请使用[a-z]
      如果您只需要大写字母,请使用[A-Z]
      如果您需要两者都使用:[a-zA-Z]

      如果您想匹配一个字符串中包含 2 个字母后跟 3 个数字 anywhere 的字符串,只需从模式中删除结束锚点 $

      [a-z]{2}[0-9]{3}
      

      如果你想匹配一个字符串,如果它有 2 个字母后跟 3 个数字 没有别的,请同时使用起始锚点 ^ 和结束锚点 $ as

      ^[a-z]{2}[0-9]{3}$
      

      【讨论】:

        【解决方案3】:

        您也可以使用:

        /\b([A-z]{2}[0-9]{3})\b/g
        

        如果您的字符串包含多个单词并且您尝试匹配一个单词。

        【讨论】:

          猜你喜欢
          • 2015-11-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-17
          • 2010-12-11
          • 2011-04-01
          • 2012-08-05
          • 2018-08-27
          相关资源
          最近更新 更多