繁体   English   中英

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

[英]RegExp: Match repeating sequence pattern of numbers

我想写一个匹配的东西像一个正则表达式01, 03, 05-08, 10但不匹配01, 03, 05-08,因为SQUENCE已与多家结束)。

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

我在RegExr上尝试了很长时间,但是找不到解决我问题的方法。 这是我的尝试: http : //regexr.com?34hh1

使用RegExp我想执行SEQUENCE_EXP.test('some string')。

试试这个模式,这是您指定的确切要求

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

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

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

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

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

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

那么NUMBER_PATTERN必须是\\d+(-\\d+)?

还有一个序列NUMBER_PATTERN[, NUMBER_PATTERN]*

那这个呢:

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

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

此正则表达式应为您工作:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM