我有一个网络表单,并希望接受以下格式的电话号码:
1234567890 123-456-7890 123.456.7890 123-4567890
第一个数字不能是 0 或 1。
如何使用正则表达式/javascript 做到这一点?我在网上找到了一些正则表达式公式,但没有一个是针对我的需求的
我有一个网络表单,并希望接受以下格式的电话号码:
1234567890 123-456-7890 123.456.7890 123-4567890
第一个数字不能是 0 或 1。
如何使用正则表达式/javascript 做到这一点?我在网上找到了一些正则表达式公式,但没有一个是针对我的需求的
null !== thenumber.match(/^[2-9][0-9]{2}[.-]?[0-9]{3}[.-]?[0-9]{4}$/);
(编辑以给出更好的布尔结果答案)
考虑以下正则表达式...
[\d-[01]]\d{2}[-\.]?\d{3}[-\.]?\d{4}
注意:您的示例以不满足上述正则表达式的 1 开头。
用户提供的格式应该是无关紧要的。将电话号码存储为数字(即仅数字)更有意义,并在显示它们时添加统一格式。否则你最终会在你的数据库中弄得一团糟,你将很难搜索数字(如果你想找到给定的数字是否已经在你的数据库中,那么你怎么知道它输入的格式? ),并且您在显示数字时会出现不一致的数字格式。
因此,无论用户在表单中输入了什么,您都可以将任何示例编号存储为 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 位数字。