【问题标题】:javascript regex to allow numbers and special characters but not zeroes onlyjavascript 正则表达式允许数字和特殊字符,但不只允许零
【发布时间】:2014-04-07 06:06:30
【问题描述】:

我需要一个 javascript 正则表达式来验证电话号码。数字不能是单个零或只有零。

例如

0
000
00000-000-(000)

这些是不允许的。

但这些是允许的:

01-0808-000
10(123)(1234)
11111

我目前的 javascript 正则表达式是:

  /^[!0]*[0-9-\)\(]+$/

但这似乎不起作用。

规则是电话号码可以包含数字和-()。它可以以 0 开头,但电话号码不能是单个 0 或多个零,仅包含或不包含上述字符。

你能指出我正确的方向吗? 提前致谢。

【问题讨论】:

  • 你能描述一下规则吗?有例子很好,但没有考虑到大多数格式。
  • 所以00000000001 是允许的吗?

标签: javascript regex


【解决方案1】:

这个正则表达式应该可以工作:

^(?=.*?[1-9])[0-9()-]+$

Working Demo

【讨论】:

    【解决方案2】:

    可以试试这个:

    /[0-9-()]*[1-9][0-9-()]*/
    

    将匹配任意数量的允许字符和数字,但如果任何地方都没有 1-9,则中间部分将无法匹配。

    /[0-9-()]*[1-9][0-9-()]*/
    

    Debuggex Demo

    【讨论】:

      【解决方案3】:

      IMO 你应该这样做:

      var str = "10(123)(1234)";
      var res = str.replace(/[^\d]/g, '');
      var fres = /^0+$/.test(res);
      if(fres)
        console.log("Not a valid phone number");
      else
        console.log("valid phone number");
      

      这将根据零的内容告诉您您的电话号码是否有效。如果全为零且没有其他数字,则返回true,否则返回false

      【讨论】:

        【解决方案4】:

        这个:

        (?=^[0-9-)(]+$)(?=.*[1-9].*)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-07-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多