Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.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 手机号码的Regex可将parathesis作为国家/地区代码的可选项,破折号、点和空格是可选项_Javascript_Node.js_Regex - Fatal编程技术网

Javascript 手机号码的Regex可将parathesis作为国家/地区代码的可选项,破折号、点和空格是可选项

Javascript 手机号码的Regex可将parathesis作为国家/地区代码的可选项,破折号、点和空格是可选项,javascript,node.js,regex,Javascript,Node.js,Regex,我正在尝试使用这个正则表达式来验证我希望允许以下格式的手机号码 ^(?([0-9]{3})?)[-. ]?([0-9]{3})[-. ]?([0-9]{4})$ 请帮助更正正则表达式()是特殊字符,因此您需要转义它们,要使其成为可选的,您可以使用? 您可以将您的模式更改为此 1234567890 123-456-7890 123.456.7890 123 456 7890 (123)4567890 (123)-456-7890 (123).456.7890 (123) 456 7890

我正在尝试使用这个正则表达式来验证我希望允许以下格式的手机号码

^(?([0-9]{3})?)[-. ]?([0-9]{3})[-. ]?([0-9]{4})$
请帮助更正正则表达式

()
是特殊字符,因此您需要转义它们,要使其成为可选的,您可以使用

您可以将您的模式更改为此

1234567890
123-456-7890
123.456.7890
123 456 7890
(123)4567890
(123)-456-7890
(123).456.7890
(123) 456 7890

const regex=/^([0-9]{3}\([0-9]{3}\)([-.]?)([0-9]{3})\2([0-9]{4})$/gm;
常量str=`1234567890
123-456-7890
123.456.7890
123 456 7890
(123)4567890
(123)-456-7890
(123).456.7890
(123) 456 7890
(123 456 7890
(123 456 7890
123-456.7890`;
让m;
while((m=regex.exec(str))!==null){
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);
});
console.log('----')
}
()
是特殊字符,因此需要对其进行转义,若要使其可选,可以使用

您可以将您的模式更改为此

1234567890
123-456-7890
123.456.7890
123 456 7890
(123)4567890
(123)-456-7890
(123).456.7890
(123) 456 7890

const regex=/^([0-9]{3}\([0-9]{3}\)([-.]?)([0-9]{3})\2([0-9]{4})$/gm;
常量str=`1234567890
123-456-7890
123.456.7890
123 456 7890
(123)4567890
(123)-456-7890
(123).456.7890
(123) 456 7890
(123 456 7890
(123 456 7890
123-456.7890`;
让m;
while((m=regex.exec(str))!==null){
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);
});
console.log('----')

}
您可以使用带有的捕获组来获取一致的分隔符,并使用一个替换来获取带有或不带括号的版本,以便例如
123-456.7890
(123-456-7890
不是有效的匹配项

^([0-9]{3}|\([0-9]{3}\))([-. ]?)([0-9]{3})\2([0-9]{4})$
  • ^
    字符串的开头
  • (?:
    非捕获组
    • \(\d{3}\)
      匹配
      ,3位数字和
    • ([-.]?)
      捕获组1,可以选择匹配
      -
      或空格
    • \d{3}\1\d{4}
      匹配3位数字,反向引用组1和4位数字
    • |
    • \d{3}
      匹配3位数字
    • ([-.]?)
      捕获组2,可以选择匹配
      -
      或空格
    • \d{3}\2\d{4}`匹配3位数字,反向引用组2和4位数字
  • $
    字符串结尾

let pattern=/^(?:\(\d{3}\)([-.]?)\d{3}\1\d{4}\d{3}([-.]?)\d{3}\2\d{4})$/;
[
"1234567890",
"123-456-7890",
"123.456.7890",
"123 456 7890",
"(123)4567890",
"(123)-456-7890",
"(123).456.7890",
"(123) 456 7890",
"(123-456-7890",
"123-456.7890"

].forEach(s=>console.log(s+“-->”+pattern.test(s));
您可以使用一个带有a的捕获组来获得一致的分隔符,并使用另一个选项来获得带有或不带括号的版本,以便例如
123-456.7890
(123-456-7890
不是有效的匹配

^([0-9]{3}|\([0-9]{3}\))([-. ]?)([0-9]{3})\2([0-9]{4})$
  • ^
    字符串的开头
  • (?:
    非捕获组
    • \(\d{3}\)
      匹配
      ,3位数字和
    • ([-.]?)
      捕获组1,可以选择匹配
      -
      或空格
    • \d{3}\1\d{4}
      匹配3位数字,反向引用组1和4位数字
    • |
    • \d{3}
      匹配3位数字
    • ([-.]?)
      捕获组2,可以选择匹配
      -
      或空格
    • \d{3}\2\d{4}`匹配3位数字,反向引用组2和4位数字
  • $
    字符串结尾

let pattern=/^(?:\(\d{3}\)([-.]?)\d{3}\1\d{4}\d{3}([-.]?)\d{3}\2\d{4})$/;
[
"1234567890",
"123-456-7890",
"123.456.7890",
"123 456 7890",
"(123)4567890",
"(123)-456-7890",
"(123).456.7890",
"(123) 456 7890",
"(123-456-7890",
"123-456.7890"
].forEach(s=>console.log(s+“-->“+pattern.test));
您可以使用此

^(?:\(\d{3}\)([-. ]?)\d{3}\1\d{4}|\d{3}([-. ]?)\d{3}\2\d{4})$
在这里测试它

你可以使用这个

^(?:\(\d{3}\)([-. ]?)\d{3}\1\d{4}|\d{3}([-. ]?)\d{3}\2\d{4})$
在这里测试它

可能像这样

^\(?[0-9]{3}\)?[\-\.\s]?\(?[0-9]{3}\)?[\-\.\s]?\(?[0-9]{4}\)?$
可能是这样

^\(?[0-9]{3}\)?[\-\.\s]?\(?[0-9]{3}\)?[\-\.\s]?\(?[0-9]{4}\)?$
这对我有用这对我有用