C # Expression régulière pour valider une date?
Je suis en train de valider une date d'entrée dans une zone de texte. Il y a un masque de saisie sur la zone de texte qui force l'entrée du xx/xx/xxxx. Je suis en train d'essayer d'utiliser une expression régulière du programme de validation de la faire respecter une date correcte est entré. Je ne suis pas habile dans la RegEx bascially à tous. Mon collègue l'a trouvé sur internet mais je ne peux pas vraiment dire ce qu'il fait.
Est-ce à regarder à droite? Semble trop compliqué...
(^((((0[1-9])|([1-2][0-9])|(3[0-1]))|([1-9]))\x2F(((0[1-9])|(1[0-2]))|([1-9]))\x2F(([0-9]{2})|(((19)|([2]([0]{1})))([0-9]{2}))))$)
Personne ne sait moins complexes, expression qui fait essentiellement ce dont j'ai besoin?
source d'informationauteur Hcabnettek
Vous devez vous connecter pour publier un commentaire.
Pourquoi ne pas utiliser l'une des méthodes disponibles dans le
System.DateTime
de l'espace de noms? Vous pouvez utiliserDateTime.TryParse()
(edit:DateTime.TryParseExact()
s'agit probablement de la suggestion) pour effectuer la validation.Vous pouvez utiliser
DateTime.TryParseExact
:Cela serait correct de l'expression régulière à utiliser pour le format de date jj/mm/aaaa
L'expression régulière ci-dessus est correcte pour jj/mm/aaaa. l'expression est
Kettenbach avait un problème.
Son collègue a suggéré d'utiliser regexs.
Kettenbach alors deux problèmes.
Comme d'autres l'ont dit, l'utilisation des
DateTime.TryParse
ouDateTime.TryParseExact
sur un validateur personnalisé et l'enregistrer vous-même le cauchemar qu'est la regex 🙂Comme alternative, vous pouvez utiliser CompareValidator au lieu de RegularExpressionValidator. Il va comme ceci:
<asp:CompareValidator ID="CompareValidator2" runat="server" ControlToValidate="txtIssueDate" ErrorMessage="Invalid Date Format" Type="Date" Operator="DataTypeCheck" Display="Dynamic" Text="*" ForeColor="Red" ValidationGroup="valGroup1"></asp:CompareValidator>
Nous pouvons utiliser un CustomValidator et utiliser le correcteur de la ServerValidate méthode de vérification de la TryParse!
pour jj/mm/aaaa (année peut être de 1000 à 2999)
ou
(([0][1-9]|[2][0-9]|[3][0-1]|[1-9]|[1][0-9])/([0][1-9]|[1][0-2]|[1-9])/([1-2][0-9][0-9][0-9]|[0-9][0-9]))
qui comprend j/m/aa (par exemple 1/12/82)
Ce n'est pas vraiment une réponse, mais ne pourriez-vous pas utiliser
DateTime.Parse
ouDateTime.TryParse
pour vérifier que la date est correcte?Ou utiliser un
DateTime
de contrôle pour s'assurer qu'il est impossible de saisir des données qui n'est pas un DateTime. Il y a beaucoup de JavaScript sur ce sujet.Dernière réponse est en fait la manière correcte de le faire. Utilisation
DateTime.TryParse
.Exemple: