2009-08-04 12 views
0

Wenn eine Adresse Polo Rd gegeben ist, identifiziert es "Po" in Polo und Warnungen Fehlermeldung.Validierung in JQuery

Also, sollten wir einen neuen Validierungsrahmen, der nicht Adreßleitungen 1 und 2 mit den Werten annehmen sollte:

  • "PO BOX", "PO IST", "IST", "PO BOX", "PO BIN", "PO", "PO"
  • die obigen Werte können in jedem Fall
  • Leerzeichen vor, zwischen und nach den oben genannten Wörtern auch gefunden und validiert werden. Zum Beispiel: "P O 1234" sollte validiert werden und eine Fehlermeldung ausgeben.
  • Aber "Polo Rd", "Robin Rd", "testbintest" als gültige Adresse in beiden Adressleitungen sollten
  • akzeptiert

der Code, der für diese writen ist

jQuery.validator.addMethod("nopobox", function(value, element) { 
    return this.optional(element) || ! /(P(OST)?\.?\s*O(FF(ICE)?)?\.?\s*((BOX)|(BIN)))|(^[^0-9]*((P(OST)?\.?\s*O(FF(ICE)?)?\.?)|((BOX)|(BIN))))/i.test(value); 
}, ""); 

Bitte lassen sie mich wissen, wie ich es

+0

Ich denke, einige Ihrer coditions ausschließen andere B. möchten Sie, dass "BIN" die Validierung nicht besteht, aber "testbintest", um sie zu übergeben, Sie sagen jedoch, dass "BIN" auf jeden Fall sein kann und jede Position in einer Eingabezeichenfolge. – RaYell

+0

ja POBIN sollte scheitern, aber normale Adresszeilen Linie Robin Straße oder Hobin Straße sollte die Validierung passieren – raj

Antwort

1

bearbeiten

ich damit rumgespielt etwas ändern kann ... don ‚T wissen, ob diese 100% Ihrer Fälle entsprechen, werden aber versuchen, diese:

<html> 
    <head> 
     <title>testing...</title> 
     <script type="text/javascript" src="scripts/jquery/1.3.1/jquery.min.js"></script> 
     <script type="text/javascript" src="scripts/jquery.validate.min.js"></script> 
     <script type="text/javascript"> 
jQuery.validator.addMethod("nopobox", function(value, element) { 
    return ! /(?:p(?:ost)?\.?\s?[o|0](?:\.|ffice)?)\b|(?:b(?:[o|0]x)|(?:in))\b/i.test(value); 
}, "PO Boxes are not allowed."); 

$(document).ready(function() {$('#test').validate({rules: {address: {nopobox: false, required: true}}})}); 
     </script> 
    </head> 
    </body> 
     <form id="test" action="#"> 
     <input type="textbox" id="address" class="required nopobox" /> 
     <input type="submit" /> 
     </form> 
    </body> 
</html> 

Als ich das laufen bekomme ich die‚Postfächer sind nicht erlaubt‘Fehler auf: PO, po, po, po, po box , box, bin, etc, etc. Aber Polo Straße, Testboxtest, etc: keine Warnung. Ein Bug: po Road Throws und Fehler ... Ich bin mir nicht sicher, dass Sie 100% der Fälle in einem einzigen Regex testen können.

Ende bearbeiten

Ok ... der Regex Meister scheinen nicht online zu sein ... Ich werde es versuchen:

diesem regex Versuchen (?:(?:p(?:[o|0]st)?\.?(?:[o|0](?:ffice)?\.?))|(?:b[o|0]x|bin))(?=\s\d)

Es geben Sie mir die folgenden in der powertoy: (eingegeben als:. s/(?:(?:p(?:[o|0]st)?\.?(?:[o|0](?:ffice)?\.?))|(?:b[o|0]x|bin))(?=\s\d)/**NO PO BOXES**/i zum Testen

Spiele:

  • PO BOX 123
  • PO BIN 1
  • BIN 1
  • p.o BOX 134
  • p.o BIN 12
  • p.o 12
  • P.O.12
  • PO 123

Keine Übereinstimmung:

  • 123 Boxen Straße
  • 123 Box Straße
  • 123 Polo-Straße
+0

Es funktioniert nicht und die Grundvoraussetzung ist Polo Road sollte positiv sein, aber Postfach sollte einen Fehler werfen Bitte antworte mir bald dank dem Code, wenn ich ich ersetze es seinen trowing Syntaxfehler jQuery.validator.addMethod ("nopobox", Funktion (Wert, Element) { return this.optional (Element) ||! s/(? :(?: p (?: [o | 0] st)? \.? (?: [O | 0] (?: ffice)?.?)) | (?: B [o | 0] x | bin)) (? = \ S \ d)/** NO PO BOXES **/i zum Testen; }, ""); – raj

+0

Ich will polen road, robin road zu arbeiten aber po box oder po bin sollte einen fehler werfen können sie mir bitte helfen mit dieser logik zu schreiben die regex bitte – raj

+0

Ich habe mein bestes getan (siehe edit oben) und es scheint Um in den meisten Fällen zu arbeiten, muss jemand besser als Regex/Jquery jetzt helfen. – beggs