逗号分隔正则表达式

时间:2015-03-22 16:58:51

标签: regex

我需要一个正则表达式来测试这样的字符串:

`8 - 12`
`8-12`
`8,9,10,11,12`
`8, 9, 10, 11, 12`

需要测试给定输入是否满足上述格式,或者给出一系列由连字符分隔限制表示的数字(例如8到12),或者用逗号分隔的数字列表。在这两种情况下,都应该忽略空格。

我从哪里开始?

3 个答案:

答案 0 :(得分:0)

这样的东西
\d+\s?[-,]?\s?

也许?

答案 1 :(得分:0)

此表达式应该执行作业/(^\d+\s*?\-\s*?\d+$)|(^\d+(\s*?\,\s*?\d+|$)*$)/

答案 2 :(得分:0)

为了提高正则表达式的易读性,我建议在检查之前删除空格 - 根据迭代次数/数据大小,单独的调用不应该有明显的性能影响。

一个简单的答案:

var str = '8 - 12';
str = str.replace(/\s+/g,'');
var matches = (/^\d+([,-]\d+)+$/).test(str); //Will allow "8-12,13"

一个不太宽容的答案:

var str = '8 - 12';
str = str.replace(/\s+/g,'');
var matches = (/^\d+(-\d+|(,\d+)+)$/).test(str); //Won't allow mixed formats

如果您没有检查整个字符串,您当然可以从表达式中删除^$,即\d+([,-]\d+)+