数字范围的正则表达式
寻找一个包含数字范围的正则表达式。更具体地说,考虑数字格式:数字范围的正则表达式
NN-NN 其中N是一个数字。因此示例如下:
04-11 07-12 
06-06 
我希望能够指定范围。例如,任何事情之间:
01-27和02-03
当我说的范围,这是因为如果-是不存在的。所以范围: 范围01-27到02-03
将涵盖: 01-28, 01-29, 01-30, 01-31和02-01
我想正则表达式,这样我可以在插入值的范围变得非常容易。有任何想法吗?
回答:
这对我来说并不完全清楚,而且你没有提到的语言为好,但在PHP它看起来像这样:
if (preg_match('~\d{2}-\d{2}~', $input, $matches) { // do something here 
} 
你有任何使用情况下,所以我们可以调整代码以您的需求?
回答:
验证日期不是正则表达式的优点。
例如,如何验证2月份的闰年。
的解决方案是使用现有的日期API在你的语言
回答:
'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 
以上是 数字范围的正则表达式 的全部内容, 来源链接: utcz.com/qa/263396.html




![正则表达式中 [\s\S]* 什么意思 居然能匹配所有字符 [] 不是范围描述符吗?](/wp-content/uploads/thumbs/270159_thumbnail.jpg)



