Javascript 用于字符集中单个字符的带乘数的正则表达式
我需要一个正则表达式来验证电话号码。允许空白(但一次只能有一个) 确定:Javascript 用于字符集中单个字符的带乘数的正则表达式,javascript,regex,string,Javascript,Regex,String,我需要一个正则表达式来验证电话号码。允许空白(但一次只能有一个) 确定:+45 1234 1234 不正常:+45 1234 1234 正常:00455445 不正常:0045 我尝试了/^[+]?[0-9\s-]*$/,但它不起作用,因为它允许多个空格。尝试使用此正则表达式: var re=/^\+?\d+(\s\d+)*$/; 变量字符串=[“+4512341234”、“+4512341234”、“0045544545”、“00455445”]; strings.forEach(s=>co
+45 1234 1234
不正常:+45 1234 1234
正常:00455445
不正常:0045
我尝试了/^[+]?[0-9\s-]*$/
,但它不起作用,因为它允许多个空格。尝试使用此正则表达式:
var re=/^\+?\d+(\s\d+)*$/;
变量字符串=[“+4512341234”、“+4512341234”、“0045544545”、“00455445”];
strings.forEach(s=>console.log(s.match(re))
您的^[+]?[0-9\s-]*$
正则表达式匹配一个字符串,该字符串以可选加号([+]?
)开头,然后具有无限量(0或更多)的数字、空格或连字符,因此,它甚至匹配“+--”
字符串:
你需要使用
/^\+?[0-9]+(?:[\s-][0-9]+)*$/
请参阅和:
如果要保持字符类中的连字符未转义,或转义字符类中的连字符,[\s-]
,请注意将-
保留在[\s-]
中字符类的末尾
详细信息
-字符串的开头^
-可选的\+?
符号+
-一个或多个数字[0-9]+
-与0次或多次重复的(?:[\s-][0-9]+)*
-与单个空格或[\s-]
-
-1位或更多数字[0-9]+
-字符串结尾$
/^\+?[0-9]+(?:[\s-][0-9]+)*$/
,看看为什么要删除regex尝试?请回滚。谢谢@WiktorStribiżew。你能解释一下你的建议为什么有效吗?在测试时,我注意到当添加一个空格时,正则表达式是无效的,直到我在它后面添加一个数字字符。我怀疑这是解决方案的一部分?您的正则表达式可以简化:^\+?\d+(\s\d+)*$您还没有提供解决方案@WiktorStribiżew。这样做,我会批准的