2009-08-04 7 views
0

Si une adresse polo Rd est donnée, elle identifie "po" dans polo et alerte un message d'erreur.validation dans jquery

Donc, nous devrions formuler une nouvelle validation qui ne devrait pas accepter les lignes d'adresse 1 et 2 avec les valeurs:

  • "PO BOX", "PO BIN", "BIN", "PO BOX", "PO BIN", "PO", "PO"
  • les valeurs ci-dessus peuvent être dans tous les cas
  • espaces avant, entre et après les mots ci-dessus doivent également être trouvés et validés. Par exemple: "P O 1234" devrait être validé et un message d'erreur d'alerte.
  • Mais "Polo Rd", "Robin Rd", "testbintest" devrait être acceptée adresse comme valide dans les deux lignes d'adresse

le code qui est writen pour c'est

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); 
}, ""); 

S'il vous plaît laissez-moi savoir comment je peux changer

+0

Je pense que certains de vos coditions ne comprennent pas d'autres conditions, par exemple vous voulez que 'BIN' échoue la validation mais' testbintest' le passe, mais vous dites que 'BIN' peut être dans tous les cas et toute position dans une chaîne d'entrée. – RaYell

+0

oui POBIN devrait échouer mais les lignes normales d'adresse ligne robin rue ou route hobin devraient passer la validation – raj

Répondre

1

modifier

J'ai joué avec ce un peu ... don Sais pas si cela correspond à 100% de vos affaires, mais essayez ceci:

<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> 

Quand je lance ce que je reçois les « boîtes postales ne sont pas autorisés » erreur: PO, po, po, po, po box , boîte, bin, etc, etc Mais route de polo, testboxtest, etc: pas d'avertissement. Un bug: jette la route et erreur ... Je ne suis pas sûr que vous pouvez tester 100% des cas dans un seul Regex.

fin modifier

Ok ... le maître Regex ne semble pas être en ligne ... Je vais vous donner un coup de feu:

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

Il me donner ce qui suit dans le powertoy: (entré comme:. s/(?:(?:p(?:[o|0]st)?\.?(?:[o|0](?:ffice)?\.?))|(?:b[o|0]x|bin))(?=\s\d)/**NO PO BOXES**/i pour les tests

Correspondances:

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

ne correspond pas:

  • 123 route de boxe
  • 123 box route
  • 123 polo route
+0

Son ne fonctionne pas et l'exigence de base est la route de polo devrait être positive mais la boîte postale devrait jeter une erreur Veuillez me répondre bientôt merci le code quand je je suis en train de le remplacer par son erreur de syntaxe de traçage jQuery.validator.addMethod ("nopobox", fonction (valeur, élément) { renvoient this.option (élément) ||! s/(? :(?: p (?: [o | 0] st)? \?? (?: [O | 0] (?: ffice)? \.?)) | (?: B [o | 0] x | bin)) (? = \ S \ d)/** NO PO BOXES **/i pour les tests; }, ""); – raj

+0

Je veux la route de pologne, la route de robin pour fonctionner mais la boîte de po ou la poubelle de poubelle devrait jeter une erreur pouvez vous s'il vous plaît m'aider avec cette logique pour écrire la regex svp – raj

+0

J'ai fait de mon mieux (voir la modification ci-dessus) et il semble pour travailler dans la plupart des cas, quelqu'un de mieux que regex/jquery devra aider maintenant. – beggs