0

我有一个网络表单,并希望接受以下格式的电话号码:

1234567890 123-456-7890 123.456.7890 123-4567890

第一个数字不能是 0 或 1。

如何使用正则表达式/javascript 做到这一点?我在网上找到了一些正则表达式公式,但没有一个是针对我的需求的

4

3 回答 3

1

null !== thenumber.match(/^[2-9][0-9]{2}[.-]?[0-9]{3}[.-]?[0-9]{4}$/);

(编辑以给出更好的布尔结果答案)

于 2013-11-07T15:35:14.967 回答
0

考虑以下正则表达式...

[\d-[01]]\d{2}[-\.]?\d{3}[-\.]?\d{4}

注意:您的示例以不满足上述正则表达式的 1 开头。

于 2013-11-07T15:39:51.303 回答
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 位数字。

于 2013-11-07T15:48:04.250 回答