2013-06-04 71 views
0

我想寫一個正則表達式來匹配頁面範圍,但更復雜!關於匹配提前頁面範圍的正則表達式

我需要匹配下面的字符串:

1-20 : from No.1 page to No.20, 
1-20x2: from No.1 to No.20 and step is 2, so it'll print 10 pages 
1-20a2: from No.1 to No.20, every 2 page printed to 1 paper 
1-20x2a2: 
1-20a2x3: 
1,3-20a2x3, 
1-20a2x3,30-35x2 
1-20x3a2,30-25a2 

我有寫一個正則表達式:

^([0-9]*|[0-9]*-[1-9][0-9]*(x[1-9][0-9]*)?(a[1-9][0-9]*)?)(,([0-9]*|[0-9]*-[1-9][0-9]*(x[1-9][0-9]*)?(a[1-9][0-9]*)?))*$ 

可幾乎每一種情況相符,但 「X」 和 「a」 的順序不能改變,

所以請幫我解決它!謝謝 !

+1

在這種情況下,最好的辦法是從組件部分建立正則表達式。查看傑弗裏弗裏德爾的「掌握正則表達式」版本的郵件地址解析器。我認爲它出現在第二版中。 –

+0

你使用什麼語言? –

回答

1

沒有反覆驗證X和一的:

(?:(\d+)(,\d+)?-(\d+)([ax]\d+)?([ax]\d+)?)+ 

認爲是由編程語言有一點幫助可以大大簡化了這一點。