2011-06-02 7 views
-2

J'ai créé une expression régulière qui valident la valeur 10, 10GB ..... Je veux le corriger à quelque chose comme il ne devrait pas prendre la valeur 10. regex: "^ \ d + (\. \ d \ d) \ s * (B |? [KMGTP] B |?%) $ »Aide requise dans regex

concernant newdev

+0

Veuillez essayer d'expliquer plus clairement ce que vous voulez que vous vouliez faire correspondre à votre expression régulière. –

+0

cette expression régulière valide la valeur 10, que je ne veux pas qu'elle valide – NewDev

+0

Qu'est-ce que * * vous voulez faire correspondre? Il y a littéralement un nombre illimité d'expressions rationnelles qui ne valideront pas "10". Essayez-vous de ne correspondre que s'il contient une unité (le «GB» dans votre question)? – eldarerathis

Répondre

1

Il suffit de se débarrasser de la? après le bit (B | [KMGTP] B |%) et cela fonctionnera comme prévu. Aussi pourrait vouloir changer le * après \ s à? il ne correspond donc pas "10_____B". (où _ est l'espace)

"^\d+(\.\d\d?)?\s?(B|[KMGTP]B|%)$" 
+0

Je pense que votre regex correspond encore à "10 B" et je pense qu'il le veut, mais le \ s * implique qu'il veut autoriser un certain nombre d'espaces après le nombre – murgatroid99

+0

Oui, c'est pourquoi j'ai dit "pourrait vouloir". Je trouve juste un peu étrange de faire correspondre un nombre infini d'espaces entre le nombre et l'unité. –

+0

Je vois. J'ai posté mon commentaire avant que votre exemple de chaîne ait plusieurs espaces. – murgatroid99