正则表达式,用于字符集中单个字符的乘法器

时间:2019-03-19 12:03:18

标签: javascript regex string

我需要一个正则表达式来验证电话号码。允许使用空格(但一次只能使用一个)。

确定+45 1234 1234

不正确: +45 1234 1234

确定0045 54 45 45 45

不正确: 0045 54 45 45 45

我尝试了/^[+]?[0-9\s-]*$/,但是它不能使用,因为它允许有多个空格。

2 个答案:

答案 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}}字符串:

enter image description here

您需要使用

"+      --- "

请参见regex demoregulex graph

enter image description here

如果您想保留/^\+?[0-9]+(?:[\s-][0-9]+)*$/ 在字符集末尾的字符集-,请保持[\s-]在字符集[\s\-]中。

详细信息

  • ^-字符串的开头
  • \+?-可选的+符号
  • [0-9]+-一个或多个数字
  • (?:[\s-][0-9]+)*-与0个或多个重复匹配的非捕获组
    • [\s-]-匹配单个空格或-
    • 的字符类
    • [0-9]+-1个或更多数字
  • $-字符串结尾