'0[12]-[0-3][1-9]'
會匹配所有需要的日期,但是,它也將匹配日期像01-03。如果您想要精確匹配並且只匹配該範圍內的日期,那麼您需要做一些更高級的操作。
下面是一個Python易於配置的例子:
from calendar import monthrange
import re
startdate = (1,27)
enddate = (2,3)
d = startdate
dateList = []
while d != enddate:
(month, day) = d
dateList += ['%02i-%02i' % (month, day)]
daysInMonth = monthrange(2011,month)[1] # took a random non-leap year
# but you might want to take the current year
day += 1
if day > daysInMonth:
day = 1
month+=1
if month > 12:
month = 1
d = (month,day)
dateRegex = '|'.join(dateList)
testDates = ['01-28', '01-29', '01-30', '01-31', '02-01',
'04-11', '07-12', '06-06']
isMatch = [re.match(dateRegex,x)!=None for x in testDates]
for i, testDate in enumerate(testDates):
print testDate, isMatch[i]
dateRegex
看起來是這樣的:
'01-27|01-28|01-29|01-30|01-31|02-01|02-02'
,輸出是:
01-28 True
01-29 True
01-30 True
01-31 True
02-01 True
04-11 False
07-12 False
06-06 False
什麼正則表達式風味您使用的?看到這個[鏈接](http://www.regular-expressions.info/numericranges.html)爲insiration –
所以這些是日期?否則,「01-32」沒有包括在內的解釋是什麼?你不能(或不應該)單獨使用正則表達式來完成。 –
這些日期?如果是這樣,你不想使用正則表達式來驗證它們。請使用您的語言中的日期庫/工具。 – Qtax