Javascript 使用Regex验证电话号码

Javascript 使用Regex验证电话号码,javascript,regex,Javascript,Regex,我有一个web表单,希望接受以下格式的电话号码: 1234567890 123-456-7890 123.456.7890 123-4567890 第一个数字不能是0或1 如何使用regex/javascript实现这一点?我在网上找到了一些正则表达式,但没有一个是针对我的需要的数字匹配(/^[2-9][0-9]{2}[.-]?[0-9]{3}[.-]?[0-9]{4}$/) (经过编辑,给出了稍微好一点的布尔结果)考虑以下正则表达式 [\d-[01]]\d{2}[-\.]?\d{3}[-\.]

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

1234567890 123-456-7890 123.456.7890 123-4567890

第一个数字不能是0或1


如何使用regex/javascript实现这一点?我在网上找到了一些正则表达式,但没有一个是针对我的需要的数字匹配(/^[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个数字。

您尝试了什么?问这个问题之前你自己研究过正则表达式吗?看这里:不在括号内,它不在括号内
[.]
表示
,不是任何字符。你说得对-很抱歉!:-)这成功了,谢谢!!