Regular expression for date time format “MM/DD/YY HH:mm:ss AM/PM” in asp.net regular expression validator

前端 未结 7 1020
粉色の甜心
粉色の甜心 2020-12-19 15:54

Can anyone tell me the regular expression format for \"MM/DD/YY HH:mm:ss AM/PM\" to use it in a regular expression validator, in asp.net 2.0

7条回答
  •  半阙折子戏
    2020-12-19 16:30

    Old question but often asked.

    RegEx for matching all dates, including leap years.

    For DD-MM-YYYY format

    ^(?:31#(?:(?:0[13578])|(?:1[02]))#)|(?:(?:29|30)#(?:(?:0[1,3-9])|(?:1[0-2]))#)(?:(?:1[6-9]|[2-9]\d)\d{2})$|^(?:29#02#(?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0[1-9])|(?:1\d)|(?:2[0-8]))#(?:(?:0[1-9])|(?:1[0-2]))#(?:(?:1[6-9]|[2-9]\d)\d{2})$
    

    For MM-DD-YYYY format

    ^(?:(?:(?:0?[13578]|1[02])#31)\1|(?:(?:0?[1,3-9]|1[0-2])#(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2#29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:(?:0?[1-9])|(?:1[0-2]))#(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
    

    Please change # in the reg ex with your desired date separator. For a global separator replace # with (/|-|.)

    RegEx tested against the following dates and running successfully. Performance is also listed.

    29-02-2000 ---> true
    millis 2
    29-02-2006 ---> false
    millis 0
    29-02-2001 ---> false
    millis 0
    30-02-2000 ---> false
    millis 0
    31-11-2000 ---> false
    millis 0
    29-13-2000 ---> false
    millis 0
    31-11-2000 ---> false
    millis 0
    31-07-2000 ---> true
    millis 0
    31-08-2000 ---> true
    millis 1
    31-12-2000 ---> true
    millis 0
    30-11-2011 ---> true
    millis 0
    17-07-2011 ---> true
    millis 0
    04-10-1987 ---> true
    millis 0
    01-01-1900 ---> true
    millis 0
    24-05-88 ---> false
    millis 0
    24-05-88 ---> false
    millis 0
    29-12-2011 ---> true
    millis 0
    31-12-2000 ---> true
    millis 0
    1-1-2010 ---> false
    millis 0
    1-1-99 ---> false
    millis 0
    1-01-99 ---> false
    millis 0
    01-1-99 ---> false
    millis 0
    

提交回复
热议问题