2016-12-14 5 views
0

J'ai une regex qui cherche des dates (0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](20)\d\d.RegEx VB.NET partie de la chaîne

Le problème est qu'il renvoie également les correspondances où la correspondance est dans une autre chaîne comme 10.10.10.2019 il correspond 10.10.2019 comme une date. Essayé avec \b au début et à la fin, mais pas de chance. Également utilisé ^ et $ mais toujours pas de chance.

Répondre

0

Vous devez utiliser lookarounds seulement correspondre entre les espaces blancs ou début/fin de la chaîne:

(?<!\S)(?:0?[1-9]|[12][0-9]|3[01])([- /.])(?:0?[1-9]|1[012])\k<1>20\d\d(?!\S) 
^^^^^^^                ^^^^^^ 

Voir la regex demo

Je suggère également de vérifier les séparateurs identiques en capturant le premier séparateur avec ([- /.]) puis en utilisant la référence arrière \k<1> (non ambigu) pour correspondre à la même valeur.

+0

La regex que vous avez fournie ne reconnaît pas ce format de date 1-1-2016 – Wotikar

+0

Maintenant, il le fait .... –