2012-08-23 27 views
7

Ich versuche, einen regulären Ausdruck zu schreiben, um Zahlen und nur einen Hypen in der Mitte (kann nicht am Anfang oder am Ende sein) sagen Muster: 02-04, 02 sind akzeptabel, aber Muster: -- oder - oder -02 oder 04- oder 02-04-06 inakzeptabel sindRegex zu Zahlen und nur einen Bindestrich in der Mitte

ich so etwas wie dies versuchte, aber dies würde erlauben - am Anfang und auch mehr erlauben -

'/^[0-9 \-]+$/' 

Ich bin nicht so gut mit Regex so eine kleine Erklärung wäre wirklich hilfreich.

EDIT: Sorry Fehler, den Sie wieder mit diesem, aber ich brauche die Zahlen von nur 2 Ziffern sein (123-346) als ungültig zu betrachten.

Antwort

12

Versuchen Sie diesen:

/^\d{1,2}(-\d{1,2})?$/ 

Ein oder zwei Ziffern, gefolgt von gegebenenfalls (ein Bindestrich durch eine oder zwei Ziffern folgen)

+1

Gleiche Antwort wie meine, aber du hast mich dazu geschlagen. Also fügte ich eine Erklärung hinzu, uplotierte und löschte mein eigenes. – slim

+0

Vielen Dank für die Erklärung @Slim Ich brauche das –

+0

Sorry, Sie wieder mit diesem Fehler, aber ich brauche die Zahlen mit nur 2 Ziffern (123-346) sollte als ungültig betrachtet werden. –

5

Ziemlich einfach:

^\d+(-\d+)?$ 

mindestens ein (+) Ziffer (\d), gefolgt von einer optionalen Gruppe wiederum einen Bindestrich-minus (-), gefolgt von mindestens einer Ziffer enthält.

+0

aber dies würde "02" ungültig machen, da ein Bindestrich von Ihrem Ausdruck benötigt wird –

+0

Dies passt nicht zu '02' –

+0

Ah, sorry; übersehen den Teil, der sagte, dass das Bindestrich-Minus optional ist. Jetzt behoben. Dieses Erfordernis ist in der Frage allerdings etwas schwer zu erkennen, da jede verbale Erklärung des Musters wie das Bindestrich-Minus-Zeichen klingt. – Joey

2

Bei Strings nach dem nur das Muster enthält

sollte funktionieren

Eine Gruppe von 2 Ziffern, gefolgt von Minus endet mit einer Gruppe von 2 Ziffern ohne Minus.

Verwandte Themen