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

4

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

  1. 12345678,12345678,12345678
  2. *space*12345678,12345678,12345678,12345678
  3. 12345678,12345678,space
如果不是8位数字,则返回false。 以下是我编写的正则表达式,但它只适用于2组数字,当我输入另一组数字时,验证无法工作。

  1. 有效:12345678,12345678
  2. 无效:12345678,12345678,12345678
var validate_numbers = /^\s*\d{8}\s*\+*(,\s*\d{8},*)?$/;

谢谢你

3个回答

2
您需要更详细地描述您想匹配的内容。我假设您想匹配由逗号和加号分隔的8位数字,可能后面跟着逗号。问题在于您最多只能匹配2组数字。 可视化。根据上述假设,这是您需要的正则表达式:
^(\s*\d{8}\s*[+,]?\s*)*$

再次提醒,您可以在debuggex上进行可视化操作。


1
哇,Debuggex 真是太棒了。感谢提供链接!我也可以大胆地建议 http://gskinner.com/RegExr/。 - Iain
嗨,目前这个正则表达式:^(\s\d{8}\s[+,]?\s*)*$ 可以验证以上所有情况。但是当我的字符串为1234567812345678时,它会返回true。我尝试过编辑它,但结果仍然相同。有什么想法吗?如何使代码可以验证上述情况和1234567812345678? - Kimberlee Ho

0

您能详细说明一下需求吗?您需要在逗号前面加上空格吗?

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

试试吧。它能很好地与验证由逗号分隔的8位数字列表的要求一起工作。

希望它有所帮助。


0

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

哦我的天啊,我自动用PHP写了第一个回复,这里是快速的JS编辑。

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

输出: 好的


如果您删除 $,它将匹配无效的字符串,例如 8 个数字后面只有字母。 - Ja͢ck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接