2009-12-09 4 views
1

doivent correspondre à la date dans une chaîne fournie par l'utilisateur il devrait fonctionner avec ces différents formatsexpression régulière dates correspondant à

jan 1 2000 
january 1 2000 
jan. 1 2000 
1/1/2000 
2000 
january 

comment voulez-vous écrire cette expression régulière?

+0

Y at-il des formats plus permis? – Amarghosh

+1

Les deux derniers ne sont pas des dates. L'un est une année, le 2ème est un mois. Pour ceux-ci, vous devrez écrire une logique supplémentaire pour déterminer ce qu'ils résolvent. – RichardOD

+0

comment puis-je écrire une expression régulière qui correspond à un numéro à 4 chiffres qui se situe entre 1000-9999 – newU

Répondre

5

Je ne voudrais pas utiliser une expression rationnelle pour elle:

DateTime attempt; 
if (DateTime.TryParse(inputDate, out attempt) 
{ 
    // You're good to go. 
} 

Mais ce serait aux prises avec une « date » du « Janvier » ou « 2000 ».

+0

comment puis-je écrire une expression régulière qui correspond à un numéro à 4 chiffres qui se situe entre 1000-9999 – newU

+1

MBO m'a devancé dans les commentaires à votre question - cependant si vous acceptez une année de 1000, pourquoi pas 850? Ou 55BC? –

1

Avez-vous pris un coup d'œil à DateTime.TryParse d'abord? Probablement, cela vous évitera d'utiliser regex, sauf peut-être dans certains cas particuliers.

1

Je chose est trop compliqué pour valider avec une expression régulière.

Une meilleure utilisation DateTime.TryParse

En outre, il est vraiment difficile de valider la date avec regex en raison de la 31/30/29/28 jours/mois et des cas particuliers comme September 1752.

2

Même si ce sont les seuls formats autorisés, il serait difficile de le faire avec regex car cela implique de vérifier si les noms des mois sont valides, vérifier si la date est valide pour le mois donné (31 avril etc), sauter années etc.

Utilisez les classes DateTime comme d'autres proposées.

1

Est-ce pour une victoire ou d'une application web? Si pour Windows, utilisez simplement DateTime.TryParse mais si c'est pour le web, utilisez plutôt javascript.

javascript Pour voir this post

Questions connexes