2

可能重复:
正则表达式只允许字符串中的整数和逗号

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

例如

706101, 700102,700295应该匹配,但0, 1, 2, 3不应该。

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

4

4 回答 4

3

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

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

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

于 2012-12-24T18:28:40.290 回答
0

尝试:

[1-9][0-9]+( *, *[1-9][0-9]+)*
于 2012-12-24T18:30:45.153 回答
0

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

此正则表达式还允许您键入数字,例如0001.

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

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

演示+说明:http ://regex101.com/r/kN2tW0

于 2012-12-24T18:35:35.323 回答
0

试试这个

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

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

于 2012-12-25T09:27:38.863 回答