关于匹配提前页面范围的正则表达式

时间:2013-06-04 03:35:42

标签: regex

我想写一个正则表达式来匹配页面范围,但更复杂!

我需要匹配以下字符串:

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和a:

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

认为编程语言的一些帮助可以大大简化这一点。