javascript正则表达式允许数字和特殊字符,但不能只有零

时间:2014-04-07 06:06:30

标签: javascript regex

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

e.g

0
000
00000-000-(000)

这些是不允许的。

但这些是允许的:

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

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

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

但这似乎不起作用。

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

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

4 个答案:

答案 0 :(得分:5)

这个正则表达式应该有效:

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

Working Demo

答案 1 :(得分:2)

可以试试这个:

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

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

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

Regular expression visualization

Debuggex Demo

答案 2 :(得分:0)

这一个:

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

答案 3 :(得分:0)

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