2012-12-24 105 views
2

可能重复分离正整数:
Regular expression to only allow whole numbers and commas in a string需要一个正则表达式匹配用逗号

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

例如

706101700102700295应该匹配,但0, 1, 2, 3不应该。我试图使用/^\s*(\d+(\s*,\s*\d+)*)?\s*$/,但它似乎也接受零。

+1

定义“序列”是什么。是否应该有最小和最大数字位数? –

+0

1,2和3都是正数,所以我不认为“正面”是描述你想要做什么的正确词汇。 – Supericy

回答

0

像这样的工作。主要变化是从\d([0-9])切换到[1-9]

这个正则表达式还允许你输入数字,如0001

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

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

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

+0

建议我用\ [1-9] \ d *替换\ d +,这样我的最终字符串是/^\ s *([1-9] \ d *(\ s *,\ s * [1-9] \ d *)*)?\ S * $ /。该语言是JavaScript。 –

+0

感谢您的演示和解释! –

3

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

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

此正则表达式将无法在空字符串(而一个在原岗位不会),但我认为它实际上是意图。如果不是,只需将第一个“数字部分”设为可选。

0

尝试:

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

逗号后的空格怎么样? –

+0

刚刚更新了...... –

0

在字符串中的任何地方试试这个

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

这RE将与独立的完全elliminate字符串 '0'。

相关问题