Skip to main content
 首页 » 编程设计

python之正则表达式未正确验证日期

2025年05月04日32cmt

 def chkDay(x, size, part): 
     dayre = re.compile('[0-3][0-9]') # day digit 0-9 
     if (dayre.match(x)): 
         if (len(x) > size): 
             return tkMessageBox.showerror("Warning", "This "+ part +" is invalid") 
             app.destroy 
         else: 
             tkMessageBox.showinfo("OK", "Thanks for inserting a valid "+ part) 
     else: 
         tkMessageBox.showerror("Warning", part + " not entered correctly!") 
         root.destroy 
 
#when clicked 
chkDay(vDay.get(),31, "Day") 
 
#interface of tkinter 
vDay = StringVar() 
Entry(root, textvariable=vDay).pack() 

问题:

  • 不验证,我可以输入大于 31 的一天,它仍然显示:OK
  • 当我调用 root.destroy 时,root(应用程序)没有关闭

请您参考如下方法:

用正则表达式验证日期很困难。您可以使用以下来源的一些模式:http://regexlib.com/DisplayPatterns.aspx?cattabindex=4&categoryId=5&AspxAutoDetectCookieSupport=1

或来自 http://answers.oreilly.com/topic/226-how-to-validate-traditional-date-formats-with-regular-expressions/

请记住,检查年份是否为闰年特别困难,例如日期 2011-02-29 是否有效?

我认为最好使用专门的函数来解析和验证日期。您可以使用 datetime 模块中的 strptime()。