2011-08-15 8 views
1

Comment puis-je modifier l'expression régulière suivante pour faire vides les valeurs (aka String.Empty) correspondent aussi:Regex: Valeur de retour peut correspondre ou être vide

^[0-9]{4}$ 

J'ai essayé ce qui suit, mais ont eu pas succès:

^[0-9]{4}$|^$ 
(^[0-9]{4}$)* 

J'utilise une application VB.Net et comparaison avec l'espace de noms System.Text.RegularExpressions.

Remarque: L'expression régulière est un nombre à quatre chiffres représentant les quatre derniers d'un SSN; et c'est optionnel. Par conséquent, je voudrais résoudre le match avec une expression régulière que d'avoir à faire quelque chose comme ceci:

If myString.Length = 0 Then 
    'This is Ok 
Else 
    'Do the regular expression comparison here 
End if 

Répondre

2

Essayez ce modèle:

^[0-9]{0,4}$ 

Il égalerons l'entrée ayant 0-4 chiffres .

Si vous ne voulez 0 ou 4 chiffres, utilisez ceci:

^[0-9]{4}$|^$ 

Démo: http://regexhero.net/tester/?id=cd85169b-f5f8-457e-8f8e-759816213fb5

+0

Il dit qu'il a déjà essayé la deuxième déclaration. Bien que je ne sais pas pourquoi cela n'aurait pas fonctionné. Est-ce que le | opérateur travaille dans les expressions régulières VB? –

+0

Hmmm ... J'ai essayé avec un moteur .Net et ça marche. Voir ma modification. – Mrchief

+0

Ok ... peut-être que je n'ai pas encore assez bu de café. J'ai essayé^[0-9] {4} $ |^$ encore et cela a fonctionné. Je dois avoir incorrectement testé plus tôt. Marquage comme réponse. Ty pour de l'aide. – ray

0

S'il vous plaît essayer la regex suivante:

^([0-9]{4})?$ 

Hope this helps.

1

Cela ferait: ^([0-9 ]{4})?$

+0

ty pour la réponse. Cela m'a fait réaliser que ma question était mal formulée. Je ne voulais pas dire des blancs comme dans la valeur ASCII 32. Je voulais dire une valeur vide tout à fait. (String.Empty) – ray

+0

@ray, Ah, gotcha! – Prisoner

Questions connexes