簡體   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