我需要一个正则表达式来验证电话号码。允许使用空格(但一次只能使用一个)。
确定:+45 1234 1234
不正确: +45 1234 1234
确定:0045 54 45 45 45
不正确: 0045 54 45 45 45
我尝试了/^[+]?[0-9\s-]*$/
,但是它不能使用,因为它允许有多个空格。
答案 0 :(得分:1)
尝试使用此正则表达式:
var re = /^\+?\d+(\s\d+)*$/;
var strings = ["+45 1234 1234", "+45 1234 1234", "0045 54 45 45 45", "0045 54 45 45 45"];
strings.forEach(s => console.log(s.match(re)));
答案 1 :(得分:1)
您的^[+]?[0-9\s-]*$
正则表达式匹配以可选加号([+]?
)开头的字符串,然后具有无限数量(0或更多)的数字,空格或连字符,因此,它甚至匹配{ {1}}字符串:
您需要使用
"+ --- "
如果您想保留/^\+?[0-9]+(?:[\s-][0-9]+)*$/
在字符集末尾的字符集-
,请保持[\s-]
在字符集[\s\-]
中。
详细信息
^
-字符串的开头\+?
-可选的+
符号[0-9]+
-一个或多个数字(?:[\s-][0-9]+)*
-与0个或多个重复匹配的非捕获组
[\s-]
-匹配单个空格或-
[0-9]+
-1个或更多数字$
-字符串结尾