可能重复:
正则表达式只允许字符串中的整数和逗号
我需要一个正则表达式来匹配以逗号分隔的正整数序列。空间也是允许的。
例如
706101
, 700102
,700295
应该匹配,但0, 1, 2, 3
不应该。
我尝试使用 /^\s*(\d+(\s*,\s*\d+)*)?\s*$/
,但它似乎也接受零。
可能重复:
正则表达式只允许字符串中的整数和逗号
我需要一个正则表达式来匹配以逗号分隔的正整数序列。空间也是允许的。
例如
706101
, 700102
,700295
应该匹配,但0, 1, 2, 3
不应该。
我尝试使用 /^\s*(\d+(\s*,\s*\d+)*)?\s*$/
,但它似乎也接受零。
替换(\d+)
为[1-9]\d*
它会工作。例如:
/^\s*[1-9]\d*(?:\s*,\s*[1-9]\d*)*$/
这个正则表达式将在空字符串处失败(而原始帖子中的那个不会),但我认为这实际上是意图。如果没有,只需将第一个“数字部分”设为可选。
尝试:
[1-9][0-9]+( *, *[1-9][0-9]+)*
像这样的东西会起作用。主要变化基本上是从\d
([0-9]) 切换到[1-9]
.
此正则表达式还允许您键入数字,例如0001
.
/^(?:0*[1-9]\d*\s*(?:,|$)\s*)+$/gm
由于您没有指定语言,因此标志可能会更改。这是PCRE。
试试这个
^([1-9]\d*[\s,]*)+$
此 RE 将完全消除字符串中任何位置带有独立 '0' 的字符串。