regex pour obtenir la date aaaa-mm-jj à partir de n'importe quelle chaîne
tout d'abord excusez-moi de ne pas être regex familier que beaucoup.Ce que je Voudrais, c'est une regex qui va extraire une date comme mysql date à partir de n'importe quel type de chaîne.
Jusqu'à présent, j'ai été en utilisant ce : ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$
Mais maintenant, je veux extraire la date des motifs à partir d'autres chaînes et datetime cordes j'ai essayé de modifier la regex pour ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]).
basé sur une certaine ligne regex testeurs, mais il échoue. Aussi, à certains moments, il m'a donné un résultat avec 3 chiffres de la journée.
En d'autres termes sting commence avec, yyyy-mm-dd
et est suivi par des espaces numéros de caractères ou quoi que ce soit. Comment extraire la date?
Mise à JOUR
Je suis en essais regex avec preg_match ici: http://www.pagecolumn.com/tool/pregtest.htm
jusqu'à présent, la seule chose qui semble fonctionner est
[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])
Vous devez vous connecter pour publier un commentaire.
Pour correspondre à des dates partout où ils apparaissent, retirez le
$
et^
les ancres de l'original de votre regex.De faire correspondre les dates au début de n'importe quelle entrée de supprimer le
$
à la fin (laissez le^
).Vous pouvez également mettre le reste de motif à l'intérieur des parenthèses pour des raisons de commodité, de sorte que le match est également capturé dans son ensemble.
Votre suggestion d'amélioration a un faux point à la fin qui va correspondre à n'importe quel caractère; c'est la raison pour le retour des matchs avec les trois chiffres du jours.
Si votre chaîne comporte plus d'une date de valeur de l'événement et vous voulez capturer tous d'entre eux, vous devez utiliser
preg_match_all
fonction et s'il n'est paspreg_match
est assez. Aussi à l'aide de^
et$
moyens chaîne d'entrée ne doit être qu'un jour, afin de l'éviter.Démonstration en direct
Essayez ceci:
vous pouvez utiliser
preg_match()
oupreg_match_all()
Ensuite utiliser la fonction strtotime et date
Il suffit de remplacer
^
pour\b
.C'est un point à la fin de votre regexp (il correspond à tous les caractères, sauf pour les sauts de ligne)
Essayez de le retirer