4

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

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

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

谢谢

4

3 回答 3

2

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

问题是您最多使用 2 组数字。可视化

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

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

同样,您可以在debuggex上对其进行可视化。

于 2013-04-05T04:15:21.203 回答
0

您能否提供有关要求的更多详细信息?逗号前需要空格吗?

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

试试看。它适用于验证数字列表的要求,该列表有 8 位数字,并用逗号分隔。

希望它会有所帮助

于 2013-04-05T04:20:17.283 回答
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");
}

输出:好的

于 2013-04-05T04:25:02.077 回答