2017-02-21 3 views
-2

Ich brauche einen Regex, um die vom Benutzer eingegebene VLAN-Zeichenfolge zu validieren. Die Zeichenfolge sollte Zahlen oder Bereiche enthalten, die durch ein Komma getrennt sind. Die Zahlen müssen zwischen 1 und 4093.Regex zum Akzeptieren von Zahlen und/oder Zahlenbereichen getrennt durch Kommas, aber zwischen Bereich 1-4093

Below Proben sind erlaubt:

1, 
1,2,3,4 
1-10, 
1-4093 
4000 

Ich versuchte unter:

^0*([1-9]|[1-8][0-9]|9[0-9]|[1-8][0-9]{2}|9[0-8][0-9]|99[0-9]|[1-3][0-9]{3}|40[0-8][0-9]|409[0-3])$ 

Notwendigkeit Komma getrennt zu verbessern und reicht

+1

reinen Code-Schreibanforderungen sind Wegthema auf Stack-Überlauf - wir erwarten hier Fragen zu beziehen * spezifische * Programmierprobleme - aber wir helfen Ihnen gerne, es selbst zu schreiben! Sagen Sie uns, was Sie versucht haben (http://stackoverflow.com/help/how-to-ask) und wo Sie stecken bleiben. Dies wird uns auch helfen, Ihre Frage besser zu beantworten. –

+0

Können Sie uns zeigen, was Sie probiert haben und was das Ergebnis war? – SaggingRufus

Antwort

1

Passend eine Nummer von 1 bis 4093 kann man verwenden:

(?:[1-9]\d{0,2}|[1-3]\d{3}|40(?:[0-8]\d|9[0-3])) 

Das rufen wir N. Nun ist die Wiederholung Teil:

^(N)(?:[,-] *(N)?)*$ 

die gibt:

^(?:[1-9]\d{0,2}|[1-3]\d{3}|40(?:[0-8]\d|9[0-3]))(?:[,-] *(?:[1-9]\d{0,2}|[1-3]\d{3}|40(?:[0-8]\d|9[0-3]))?)*$ 

Live demo

+0

Vielen Dank Thomas. Es funktioniert perfekt. – Rinky

+1

@Rinky Bitte akzeptieren Sie die Antwort, da es anderen hilft zu erkennen, dass das Problem gelöst ist und die richtigen Kredite an die Person geht, die geantwortet hat –

Verwandte Themen