带有逗号和空格的验证号的正则表达式

时间:2013-04-05 04:03:12

标签: javascript regex

我不确定为什么这个正则表达式不起作用。 我想验证输入是否采用以下格式:

  1. 12345678,12345678,12345678
  2. * space * 12345678,12345678,12345678,12345678
  3. 12345678,12345678,空间
如果不返回false,则必须是8位数。 下面是我所做的正则表达式,但它适用于2组数字但是当我输入另一组数字时,验证不起作用。

  1. 工作:12345678,12345678
  2. 不工作:12345678,12345678,12345678
  3. var validate_numbers = /^\s*\d{8}\s*\+*(,\s*\d{8},*)?$/;
    

    谢谢

3 个答案:

答案 0 :(得分:2)

您需要更详细地描述您想要匹配的内容。我假设你想要匹配用逗号和字母分隔的8位数字,可能后跟逗号。

问题是你最多需要2组数字。 Visualization

鉴于上述假设,这是你想要的正则表达式:

^(\s*\d{8}\s*[+,]?\s*)*$

同样,您可以在debuggex上将其可视化。

答案 1 :(得分:0)

您能否详细介绍一下这项要求?你需要在逗号之前有空格吗?

\\d{8}(?:,\\d{8})*+

试试吧。它可以正常工作,需要验证一个数字列表,它有8位数字,并用逗号分隔。

希望它会有所帮助

答案 2 :(得分:0)

从当前正则表达式中删除“$”。它严格匹配行的结尾,这会导致表达式在所需的字符串上返回false。对于您之前提到的先前返回FALSE的字符串,以下代码返回TRUE。

omgerd我在PHP中自动编写了第一个响应,这里是快速JS编辑

var pattern = /^\s*\d{8}\s*\+*(,\s*\d{8},*)?/;
var data2 = '12345678 , 12345678 ,12345678';
if (pattern.test(data2) != 0) {
    alert("ok");
}

输出: 确定