2013-04-05 36 views
4

我不确定为什么这个正则表达式不起作用。 我想验证如果输入的格式如下:正则表达式用于逗号和空间的验证数字

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

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

谢谢

回答

2

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

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

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

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

同样,你可以想像它debuggex

+0

哇,debuggex是辉煌的。感谢您的链接!我也可以大胆地建议http://gskinner.com/RegExr/。 – Iain 2013-04-05 04:19:26

+0

谢谢!得到它了! – 2013-04-05 04:36:21

+0

嗨,目前这个正则表达式:^(\ s * \ d {8} \ s * [+,]?\ s *)* $验证上述所有情况。但是当我的字符串是1234567812345678时,它会返回true。我尝试对其进行编辑。但结果仍然相同。任何想法我怎么能做到这一点?这样的代码可以验证上面的情况和1234567812345678? – 2013-04-05 10:47:34

0

你能详细介绍一下这个需求吗?你需要逗号前有空格吗?

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

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

希望它有帮助

0

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

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

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

输出: OK

+0

如果您删除$,它将匹配无效的字符串,例如8位数字后跟唯一的字母。 – 2013-04-05 05:47:46

相关问题