Quiero utilizar la expresión regular para que coincida con estos formatos de fecha siguiente en C#.

  1. AAAA/MM/DD 2013/11/12
  2. AAAA/M/DD 2013/5/11
  3. AAAA/MM/D 2013/10/5
  4. AAAA/M/D 2013/5/6

He probado algunas de las expresiones regulares, pero pueden no coincidir con los 4 formatos de fecha.
como

^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])
  • usted necesita para que coincida con 0 o 1 instancia de 0 por lo que necesita una ? después de 0.
InformationsquelleAutor Michael | 2013-10-14

6 Comentarios

  1. 4

    de verificación este para tener una idea de la compexity de regex y validación de fechas. así que me gustaría utilizar

    \d{4}(?:/\d{1,2}){2}

    a continuación, en c# lo que sea para validar el partido. si bien se puede hacer, vas a pasar un montón de tiempo tratando de conseguirlo, aunque no es una expresión regular en ese post que con un poco de tocar el violín supuestamente va a validar fechas en regex, pero es un miedo buscando regex

    • Puede usted explicar por qué usted está usando ?: funcionaría de otra manera, como lo que puedo decir.
  2. 3

    Intentar

    ^\d{4}[-/.]\d{1,2}[-/.]\d{1,2}$

    Las llaves {} dar el número permitido. E. g., \d{1,2} medio de uno o dos dígitos.

    • Feliz de ayudar! En caso de que usted no la ha visto, este sitio es una referencia que se basan en la regex detalles.
  3. 0

    Usted puede necesitar más que eso para que coincida con la fecha. Intente esto:

    (19|20)\d\d([-/.])(0?[1-9]|1[012])\2(0?[1-9]|[12][0-9]|3[01])
  4. 0

    Ajit del regex está más cerca de perfecto, pero las fugas de la evaluación de los años bisiestos que terminan con 12 y 16. Aquí es la corrección a ser perfecto

    ((([0-9][0-9][0-9][1-9])|([1-9][0-9][0-9][0-9])|([0-9][1-9][0-9][0-9])|([0-9][0-9][1-9][0-9]))-((0[13578])|(1[02]))-((0[1-9])|([12][0-9])|(3[01])))|((([0-9][0-9][0-9][1-9])|([1-9][0-9][0-9][0-9])|([0-9][1-9][0-9][0-9])|([0-9][0-9][1-9][0-9]))-((0[469])|11)-((0[1-9])|([12][0-9])|(30)))|(((000[48])|([0-9]0-9)|([0-9][1-9][02468][048])|([1-9][0-9][02468][048])|([0-9]0-9)|([0-9][1-9][13579][26])|([1-9][0-9][13579][26]))-02-((0[1-9])|([12][0-9])))|((([0-9][0-9][0-9][1-9])|([1-9][0-9][0-9][0-9])|([0-9][1-9][0-9][0-9])|([0-9][0-9][1-9][0-9]))-02-((0[1-9])|([1][0-9])|([2][0-8])))
    • No funciona para 1900-02-29 y 2100-02-29 que no son fechas válidas. También, usted puede reemplazar [0-9] con \d su expresión regex mucho más corto
  5. 0
    ((([0-9][0-9][0-9][1-9])|([1-9][0-9][0-9][0-9])|([0-9][1-9][0-9][0-9])|([0-9][0-9][1-9][0-9]))\-((0[13578])|(1[02]))\-((0[1-9])|([12][0-9])|(3[01])))|((([0-9][0-9][0-9][1-9])|([1-9][0-9][0-9][0-9])|([0-9][1-9][0-9][0-9])|([0-9][0-9][1-9][0-9]))\-((0[469])|11)\-((0[1-9])|([12][0-9])|(30)))|(((000[48])|([0-9][0-9](([13579][26])|([2468][048])))|([0-9][1-9][02468][048])|([1-9][0-9][02468][048]))\-02\-((0[1-9])|([12][0-9])))|((([0-9][0-9][0-9][1-9])|([1-9][0-9][0-9][0-9])|([0-9][1-9][0-9][0-9])|([0-9][0-9][1-9][0-9]))\-02\-((0[1-9])|([1][0-9])|([2][0-8])))

    Este es el regex para yyyy-MM-dd formato.

    Puede reemplazar - con \/ para yyyy/MM/dd

    Probado funcionando perfecto..

    • Esto lastima mis ojos. 😉
    • No funciona para 1900-02-29 y 2100-02-29 que no son fechas válidas. También, usted puede reemplazar [0-9] con \d su expresión regex mucho más corto
  6. -1

    Probar esta. Este acepta todos los modelos de cuatro

    @"\d{4}[- /.]([1-9]|0[1-9]|1[012])[- /.]([1-9]|0[1-9]|[12][0-9]|3[01])"

Dejar respuesta

Please enter your comment!
Please enter your name here