2011-01-07 2 views
4

ich für die Überprüfung des zipcodeWie ein mindestens 3 Zeichen in einem bestimmten Wert zu überprüfen, regulären Ausdruck

var regexObj = 
/^(?=[^-]*-?[^-]*$)[0-9-]*[0-9]$/; 

Ich brauche also

es eine weitere Bedingung zu diesem hinzuzufügen, Javascript-Code haben machen so dass Benutzer ein mindestens 3 Zeichen eingeben

kann man sagen, wie kann ich meine regulären Ausdruck ändern für diesen

+0

Sie brauchen dazu keine Regex. Fügen Sie einfach einen zusätzlichen Check hinzu, 'string.length> = 3' Das wird wahrscheinlich auch schneller als jeder Regex sein. – kijin

+0

@kijin Es ist durchaus sinnvoll, das Muster mit einem Regex zu vergleichen. Vielleicht hast du die Frage falsch verstanden, vielleicht habe ich es getan. – marcog

Antwort

11

Warum in der Welt haben Sie eine regex müssen prüfen die Länge einer Schnur?

var testString1 = 'this is long enough'; 
alert(testString1.length >= 3); // true 

var testString2 = 'no'; 
alert(testString2.length >= 3); // false 
+4

+1, um den Wald von den Bäumen zu sehen. –

+1

Der einfachste Grund, an den ich denken kann, ist, wenn er keine zusätzliche Überprüfung hinzufügen möchte, da er bereits eine RegEx.IsMatch durchführen wird, könnte auch die minimale Länge prüfen, anstatt einen zusätzlichen Methodenaufruf hinzuzufügen. – Adrian

+3

@ downvoters: irgendwelche Kommentare? Ernsthaft, eine Regex ist das ** falsche Werkzeug für den Job **. –

14
/^(?=[^-]*-?[^-]*$)[0-9-]*[0-9]$/ 

entspricht

/^[0-9-]*[0-9]$/ 

Sie können ohne Längenprüfung in einem Durchgang hinzufügen Look-Ahead zu erfordern

/^[0-9-]{2,}[0-9]$/ 

, dass mindestens 3 Zeichen ist, das letzte Wesen eine Ziffer und der Rest sind Ziffern und -. Siehe

Sie können auch das erste Zeichen von einem - beschränken. Sie können auch 3 Ziffern benötigen, ohne die - als eines der erforderlichen 3 Zeichen zu zählen. Setzt man diese zusammen würden wir bekommen:

/^[0-9]-*[0-9][0-9-]*[0-9]$/ 

Siehe http://www.rubular.com/r/Qhl843Txib

+0

+1 für die Vereinfachung. –

+0

+1 für den Rubellink, meine neue Lieblingsmethode, Regex zu erstellen –

0

Sind Sie sicher, dass dies für die Überprüfung "ZipCode" ist (eindeutig amerikanisch)?
Wikipedia: "Postleitzahlen sind ein System von Postleitzahlen von der United States Postal Service (USPS) seit 1963 verwendet. Der Begriff PLZ, ein Akronym für Zone Improvement Plan, [1] ist ordnungsgemäß in Großbuchstaben geschrieben und wurde gewählt schlagen vor, dass die Post effizienter und damit schneller transportiert wird, wenn Absender den Code in der Postanschrift verwenden.Das Grundformat besteht aus fünf dezimalen numerischen Ziffern.Ein erweiterter ZIP + 4-Code, der in den 1980er Jahren eingeführt wurde, umfasst die fünf Ziffern von die Postleitzahl, ein Bindestrich und vier weitere Ziffern, die einen genaueren Ort als die Postleitzahl bestimmen. "
/^(\d{5})(-\d{4})?$/

1

In HTML5 können Sie eine pattern verwenden.

In Ihrem Beispiel würden Sie die folgende tun, wo drei der Minimalwert und etwas hinter dem Komma einen Maximalwert wäre ist (in Ihrem Fall Sie keinen Maximalwert hat):

<input pattern=".{3,}"> 
Verwandte Themen