我有正则表达式允许这些格式
正则表达式:
/^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}$/
格式:
(123) 456-7890
123-456-7890
123.456.7890
1234567890
我想让它允许7位数或7位以上。目前它允许10个数字不小于或等于。 请帮忙!
答案 0 :(得分:1)
不要打扰这样的困难电话号码 - 如果你只是想检查,为什么不走简单路线并更换任何不是数字的东西,然后检查字符串的长度?
var telephoneNumber = '(123) 456-7890';
telephoneNumber = telephoneNumber.replace(/[^\d]+/g, '');
if (telephoneNumber.length >= 7) {
console.log('Everything is OK! The number is: ' + telephoneNumber);
//Everything is OK! The number is: 1234567890
} else {
console.log('Something went wrong!');
}
这也符合123-abc-456-7890,但会“正确理解”。
答案 1 :(得分:0)
试试这个:
^[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{1,5}$
它将检查您是否至少有7个号码(最多11个)。你想允许多少个号码?
答案 2 :(得分:0)
没有正则表达式来匹配多个国家/地区的电话号码,这听起来像你需要的。相信我,我已经尝试过了。
如上所述,只需允许用户输入任何内容并删除任何不是数字的内容,然后再将其保存到数据库中。这样,当您在2年内重新设计应用程序并且设计师说“我想要小数而不是破折号”时,您不必去处理数据库 - 您只需调整表示层。
这样的事情可能适合你:
/^(?:[(]{0,1}[0-9]{3}[)]{0,1}[-\s\.]{0,1}[0-9]{3}[-\s\.]{0,1}[0-9]{4}|[0-9]{3}[-\s\.]{0,1}[0-9]{4})$/
匹配以下内容:
1234567
123 4567
123.4567
123-1234
1234567890个
123 456 7890
123.456.7890
123-456-7890
......但不是这样:
(123)1234