我使用下面的REGEX来有效地检查字符串是否为YYYY-MM-DD日期。
[0-9]{4}-[0-9]{2}-[0-9]{2}我如何做相反的事情,并使用类似的REGEX来检查字符串不是此格式的日期。
发布于 2011-10-28 00:10:31
你可以使用负面的前瞻来解决这个问题:
(?![0-9]{4}-[0-9]{2}-[0-9]{2})编辑:在看了Lucasus的帖子后,我做了一个新的regex来进行更严格的验证。
新的正则表达式:
(?!([0-9]{4})-([1-9]|0[1-9]|1[012])-([1-9]|0[1-9]|[12][0-9]|3[01]))发布于 2011-10-28 00:34:02
您的正则表达式匹配的不只是一个有效日期(例如"3333-99-99"),您可以使用更长的表达式:
^(19[0-9][0-9]|20[0-9][0-9])-([1-9]|0[1-9]|1[012])-([1-9]|0[1-9]|[12][0-9]|3[01])$如果想要匹配除日期之外的所有内容,请使用负面预测,就像Marcus写的那样:
^(?!((19[0-9][0-9]|20[0-9][0-9])-([1-9]|0[1-9]|1[012])-([1-9]|0[1-9]|[12][0-9]|3[01])))$正则表达式来自this link
发布于 2011-10-28 00:40:22
import datetime
try:
datetime.datetime.strptime('2011-10-27','%Y-%m-%d')
except ValueError:
print 'The string is NOT in the right format'
else:
print 'The string is in the right format'事实上,这不是正则表达式,但它可能表现得更好-可能值得进行基准测试……
https://stackoverflow.com/questions/7918920
复制相似问题