Regex 需要正则表达式来验证没有加号的11位电话号码
例如,我需要一个正则表达式来验证没有加号(+)的电话号码 46123456789,46-123-456-789,46-123-456-789 数字应为11位,其余数字应忽略 我目前正在使用这个正则表达式Regex 需要正则表达式来验证没有加号的11位电话号码,regex,Regex,例如,我需要一个正则表达式来验证没有加号(+)的电话号码 46123456789,46-123-456-789,46-123-456-789 数字应为11位,其余数字应忽略 我目前正在使用这个正则表达式/([+]?\d{1,2}[.-\s]?)(\d{3}[.-]?){2}\d{4}/g 它一点也不正确我不确定输入是什么样子的。但基于你的问题,我想你想把它修剪一下,然后和正则表达式匹配 调整你的输入 string.split(/[^0-9.]/).join(''); 您可以将其与此正则表达式匹
/([+]?\d{1,2}[.-\s]?)(\d{3}[.-]?){2}\d{4}/g
它一点也不正确我不确定输入是什么样子的。但基于你的问题,我想你想把它修剪一下,然后和正则表达式匹配 调整你的输入
string.split(/[^0-9.]/).join('');
您可以将其与此正则表达式匹配:
((\([0-9]{3}\))|[0-9]{3})[\s\-]?[\0-9]{3}[\s\-]?[0-9]{4}$
我会让这个函数返回true或false并按原样使用
功能isPhoneValid(电话){
让onlyNumbers=phone.replace(/[^0-9]/g,“”);
如果(onlyNumbers.length!=11)console.log(phone+'无效');
else console.log(电话+'有效');
}
isPhoneValid('1(888)555-1234');
isPhoneValid('(888)555-1234')代码>关于您尝试的模式:
在模式中使用此部分可以选择匹配加号。它被包装在一个可选组([+]?\d{1,2}[.-\s]?)?
中,可能还匹配总共12位数字
字符类[.-\s]
与列出的字符中的1个匹配,允许使用混合分隔符,如333-333.3333
您没有使用锚,也可能获得部分匹配
您可以使用|
将图案与连字符和数字匹配,或者仅匹配11个数字
^(?:\d{2}-\d{3}-\d{3}-\d{3}|\d{11})$
^
字符串的开头
(?:
备选方案的非捕获组
\d{2}-\d{3}-\d{3}-\d{3}
匹配由连字符分隔的位数
|
或
\d{11}
匹配11位数字
)
关闭组
$
字符串结尾
如果需要多个必须一致的分隔符,可以使用带有反向引用的捕获组\1
^(?:\d{2}([-.])\d{3}\1\d{3}\1\d{3}|\d{11})$
为什么不直接从字符串中删除非数字字符,然后验证剩下的是11个字符?我还需要验证46-123-456-789,如^\d{2}-\d{3}-\d{3}-\d{3}| \d{11}$
这个页面有更多关于验证电话号码@UmerZaman的信息,我认为它不允许+符号,因为锚^
和$
请看@UmerZaman你是对的,很抱歉我忘了它周围的分组^(?:\d{2}-\d{3}-\d{3}-\d{3}-\d{3}-\d{3}\d{3}\d{124;\ d{11}$