Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于电话号码的Javascript正则表达式,格式严格/怪异_Javascript_Regex - Fatal编程技术网

用于电话号码的Javascript正则表达式,格式严格/怪异

用于电话号码的Javascript正则表达式,格式严格/怪异,javascript,regex,Javascript,Regex,我被要求创建一个正则表达式,用以下规则验证电话号码: 电话:包含9至11位数字。空格、点和破折号可用于分组/分隔数字,以便于阅读。但是,空格、圆点和破折号不能放在手机的开头或结尾。此外,它们不能相邻放置。有效电话示例:0123456789,0-1-2-3.4.5 6.7-8-9,012.345-6789。无效电话示例:01234567890123(太长),(0123)456-7890(不允许使用括号),012--3456789(两个短划线相邻) 由于电话号码是如此自由的形式,我有一个困难的时间找

我被要求创建一个正则表达式,用以下规则验证电话号码:

电话:包含9至11位数字。空格、点和破折号可用于分组/分隔数字,以便于阅读。但是,空格、圆点和破折号不能放在手机的开头或结尾。此外,它们不能相邻放置。有效电话示例:0123456789,0-1-2-3.4.5 6.7-8-9,012.345-6789。无效电话示例:01234567890123(太长),(0123)456-7890(不允许使用括号),012--3456789(两个短划线相邻)


由于电话号码是如此自由的形式,我有一个困难的时间找出正确的正则表达式为它。我仍然是JS的新手,这对我没有帮助,因此任何提示或帮助都将不胜感激。

您可以尝试以下正则表达式:

^\d(?:[. -]?\d){8,10}$
^文本的开头
\d数字
(?:非捕获组
[.-]?可选的点、空格或破折号
\d数字
)小组结束
{8,10}重复8到10次,加上开头的一个数字,总共是9到11个数字
$文本结尾

使用JavaScript:

const text=[
'0123456789',
'0-1-2-3.4.5 6.7-8-9',
'012.345-6789',
'01234567890123',
'(0123)456-7890',
'012--3456789'
];
常量正则表达式=/^\d(?:[.-]?\d){8,10}$/;

text.forEach(text=>console.log(`${text}:${regex.test(text)}`)此正则表达式可能有帮助:

[A-Za-z0-9]{3,4}[-. ]?[A-Za-z0-9]{3}[-. ]?[A-Za-z0-9]{3,4}

它起作用了!谢谢你,伙计。