我有一个网络表单,并希望以下列格式接受以下电话号码:
1234567890 123-456-7890 123.456.7890 123-4567890
第一个数字不能是0或1。
如何使用regex / javascript执行此操作?我在网上发现了一些正则表达式,但没有一个是我特有的需求
答案 0 :(得分:1)
null !== thenumber.match(/^[2-9][0-9]{2}[.-]?[0-9]{3}[.-]?[0-9]{4}$/);
(编辑用布尔结果给出稍好的答案)
答案 1 :(得分:0)
考虑以下Regex ......
[\d-[01]]\d{2}[-\.]?\d{3}[-\.]?\d{4}
注意:您的示例以1开头,不满足上述正则表达式。
答案 2 :(得分:0)
用户提供的格式应无关紧要。将电话号码存储为数字(即仅数字)更有意义,并在显示它们时添加统一格式。否则你最终会在数据库中乱七八糟,并且你将很难搜索数字(如果你想查找给定数字是否已经在你的数据库中那么你怎么知道它输入的格式? ),并且在显示数字时你会有不一致的数字格式。
因此,无论用户在表单中输入什么内容,您都可以将任何示例数字存储为1234567890。这意味着您可以通过剥离任何非数字来验证您的输入,然后检查长度和其他条件,如下所示:
function validPhone( num ){
var digits = num.replace(/\D/g,'');
// assuming 10 digits is a rule you want to enforce and the first digit shouldn't be 0 or 1
return (parseInt(digits[0],10) > 1 && digits.length == 10);
}
您还可以使用return parseInt(digits, 10) >= 2000000000
来验证该号码不是以0开头也不是1而且至少 10位数。