RegEx:匹配重复的数字序列模式

时间:2013-04-15 15:24:37

标签: javascript regex validation

我正在尝试编写一个与01, 03, 05-08, 10匹配但与01, 03, 05-08,不匹配的RegExp(因为序列必须以数字结尾)。

所以基本上我的"字符串"由/(\-?\d+)\-(\-?\d+)/(例如01-05或-5-10)组成,此模式的每个实例都用逗号分隔。

我用RegExr尝试了一段时间,但无法找到解决问题的方法。这是我的尝试:http://regexr.com?34hh1

使用RegExp我想做SEQUENCE_EXP.test('一些字符串')。

5 个答案:

答案 0 :(得分:1)

尝试此模式这是您指定的确切要求

^(-?\d+(--?\d+)?,\s?)*-?\d+(--?\d+)?$

现场演示:http://regexr.com?34hhp

答案 1 :(得分:0)

您可以使用$运算符指示字符串必须以表达式结尾。在你的情况下,你可以尝试:

/^((-?\d+(-\d+)?)\s*,\s*)+(-?\d+(-\d+)?)$/

请注意,您不必转义方括号外的-

答案 2 :(得分:0)

因此,您有两种模式,即有效数字\d+\d+-\d+

因此NUMBER_PATTERN必须为\d+(-\d+)?

序列NUMBER_PATTERN[, NUMBER_PATTERN]*

这个怎么样:

/\d+(-\d+)?(, \d+(-\d+)?)*$/

看看http://regexr.com?34hhj

答案 3 :(得分:0)

这个正则表达式适合你:

^(?:\d+(?:-\d+)?,)*\d+$

现场演示:http://www.rubular.com/r/QTnbqncycZ

答案 4 :(得分:0)

function test(r){
    return  "01, 03, 05-08, 10".match(r) && 
            !"01, 03, 05-08,".match(r)
}

test(/^(\d+(-\d+)?,\s*)*\d+$/)