2010-05-27 138 views
9

我试图创建一个正则表达式,它接受: 一个空字符串,一个整数或多个用逗号分隔的整数,但不能有逗号和开始和结尾。正则表达式:逗号分隔的整数

我设法找到这一点,但我不能undertsand如何删除位数限制

^\d{1,10}([,]\d{10})*$ 
+0

注意'[,]'相当于','你可能打算写'([,] \ d {1,10})*'而不是'([,] \ d {10})*'。 – 2010-05-27 13:29:01

回答

30

您发布仍然事情需要至少1的整数,所以它不会匹配一个空字符串:

这里是你需要的东西:

^(\d+(,\d+)*)?$ 

阐释:

  1. 把整个事情在括号中和结束与'?'所以以匹配空字符串。
  2. 总是以整数开始,所以'\d+'.也就是说1个或多个数字字符('0'-'9')
  3. 然后,让一组包含',\d+'括号,并把一个星号之后。 3a。里面的意思是以','开始,然后是整数。 3b。星号表示在括号内重复0次或更多次。

亨奇整件事是either an empty string or start with an integer then repeat zero or more times a string which starts with a comma and ends with an integer

+0

所有的工作,但我不得不选择一个,先来先服务了,谢谢:) – 2010-05-27 13:39:35

+1

@Metzu,请注意,第一个不匹配空字符串... – tster 2010-05-27 13:40:54

+0

这应该被标记为正确的答案 – Spike 2011-12-16 17:20:53

3

{1,10}{10}的范围。您可以用+替换它们以获得无限正面效果。例如:

^\d+([,]\d+)*$ 
+2

你可以忽略逗号周围的方括号。 – 2010-05-27 13:25:23

+0

你说得对。 – troelskn 2010-05-27 15:02:30

1

尝试以下操作:

^(\d+(,\d+)*)?$ 
+0

谢谢你:) – 2010-05-27 13:40:20

相关问题