需要一个正则表达式来匹配用逗号分隔的正整数

时间:2012-12-24 18:26:59

标签: regex

  

可能重复:
  Regular expression to only allow whole numbers and commas in a string

我需要一个正则表达式来匹配用逗号分隔的POSITIVE整数序列。空间也是允许​​的。

例如

706101700102700295应该匹配,但0, 1, 2, 3不应该匹配。

我尝试使用/^\s*(\d+(\s*,\s*\d+)*)?\s*$/,但它似乎也接受了零。

4 个答案:

答案 0 :(得分:3)

(\d+)替换为[1-9]\d*,它会起作用。例如:

/^\s*[1-9]\d*(?:\s*,\s*[1-9]\d*)*$/

这个正则表达式将在空字符串中失败(而原始帖子中的那个将不会),但我认为它实际上是意图。如果没有,只需将第一个“数字部分”设为可选。

答案 1 :(得分:0)

尝试:

[1-9][0-9]+( *, *[1-9][0-9]+)*

答案 2 :(得分:0)

这样的事情会起作用。主要变化基本上是从\d([0-9])切换到[1-9]

此正则表达式还允许您键入0001等数字。

/^(?:0*[1-9]\d*\s*(?:,|$)\s*)+$/gm

由于您没有指定语言,标志可能会更改。这是PCRE。

演示+解释:http://regex101.com/r/kN2tW0

答案 3 :(得分:0)

试试这个

^([1-9]\d*[\s,]*)+$

此RE将完全消除字符串中任何位置的独立“0”的字符串。