我想編寫一個正則表達式,該正則表達式與允許的逗號分隔列表中給出的數值列表匹配。空是不允許的。用逗號分隔的列表中值的範圍的正則表達式
喜歡的東西:1-10,20-56,8,7
到目前爲止,我有(([0-9] +)|([0-9] + - [0-9] + ))* [0-9] +。這可以完成大部分工作,但它只會忽略一個範圍的情況(例如:1-10不會驗證)。
可以省略每個範圍的檢查(例如:可以允許20-10爲有效範圍)。
任何幫助,將不勝感激。
我想編寫一個正則表達式,該正則表達式與允許的逗號分隔列表中給出的數值列表匹配。空是不允許的。用逗號分隔的列表中值的範圍的正則表達式
喜歡的東西:1-10,20-56,8,7
到目前爲止,我有(([0-9] +)|([0-9] + - [0-9] + ))* [0-9] +。這可以完成大部分工作,但它只會忽略一個範圍的情況(例如:1-10不會驗證)。
可以省略每個範圍的檢查(例如:可以允許20-10爲有效範圍)。
任何幫助,將不勝感激。
什麼你之後任選地跟隨零個或多個一(數量或範圍):逗號加號(數字或範圍):
(?:\d+(?:-\d+)?)(?:,(?:\d+(-\d+)?))*
它使用\d
快捷鍵[0-9]和非捕獲圓括號構造的(?: ...)
。
這個正則表達式不允許列表中包含任何空格。爲了讓那些插入「可選空間」 \s*
每學期之間:
\s*(?:\d+(\s*-\s*\d+)?)\s*(?:,\s*(?:\d+(\s*-\s*\d+)?)\s*)*
比方說你的行話那核心是
([0-9]+.)|([0-9]+-[0-9]+)
它匹配單個數值或範圍。所以,你需要的是:
(CORE,)*CORE
而你所擁有的是:
(CORE,)*DIGIT
不喜歡這一點,你將被罰款:
(([0-9]+.)|([0-9]+-[0-9]+),)*([0-9]+.)|([0-9]+-[0-9]+)
我想你要找的是:
(CORE)(,\s+CORE)*
這將允許列表是:
CORE 核,核 CORE,CORE CORE ,CORE,CORE
等。
希望這有助於
大衛
我的版本:^([0-9] +)( - [0-9] +)*(([0-9] +)( - [0 -9] +)*)* $。它或多或少是相同的:) – poh 2010-11-30 04:33:06