PO Box Expression Régulière de Validation
Voici mon code, mais je n'arrive jamais à déclencher l'alerte.
$(document).ready( function (){
$("[id*='txtAddress1S']").blur(function() {
var pattern = new RegExp('\b[P|p]*(OST|ost)*\.*\s*[O|o|0]*(ffice|FFICE)*\.*\s*[B|b][O|o|0][X|x]\b');
if ($("[id*='txtAddress1S']").val().match(pattern)) {
alert('We are unable to ship to a Post Office Box.\nPlease provide a different shipping address.');
}
});
});
Merci d'avance!
OriginalL'auteur s15199d | 2011-04-15
Vous devez vous connecter pour publier un commentaire.
En javascript, vous avez pour échapper à vos barres obliques:
Aussi, vous pouvez réduire votre modèle un peu en utilisant insensible à la casse:
Remarque: Votre regex également les correspondances des adresses telles que:
Je suggère également de vérifier pour un numéro de la chaîne. Peut-être que ce motif à partir d'un réponse précédente serait de peu d'aide:
(qu'il ne correspond pas à "Bureau de Poste", orthographié, ou le numérique remplacements.. mais c'est un début.)
b[o|0]x
au lieu de[b][o|0][x]
.Merci pour l'astuce. J'ai édité dans la réponse.
Merci!!!! C'est exactement droite.
N'utilisez pas le
|
ou de l'opérateur à l'intérieur d'une classe de caractères. (Sauf si vous voulez faire correspondre la lettre|
ou personnage lui-même). c'est à dire Ne pas écrire[P|O|\.]
mais plutôt juste:[PO.]
(vous pouvez aussi ne pas besoin d'échapper le point à l'intérieur d'un char de classe).Je vous remercie. Je suis encore un novice quand il s'agit d'expressions régulières.
OriginalL'auteur drudge
J'ai essayé plusieurs PO Box RegExp modèles trouvés sur internet, y compris ceux affichés sur un Débordement de Pile, aucun d'entre eux sont passés nos exigences de test. Donc, j'ai posté notre RegExp ci-dessous et nos jeux de test:
777 Post Offie Boîte = renvoie la valeur false
ce qui semble manquer
Post Box #123
Je pense que celui-ci fait sens, sauf pour le "#123" être valide, boîte postale
J'ai supprimé le signe dièse (comme le premier test n ° 123) parce que cela pourrait être valide, le numéro d'immeuble ou de quelque chose: ^ *(((boîte|bin)[-. \/\]?\d+)|(.*p[ \.]? ?(o|0)[-. \/\]? *-?((boîte|bin)|b|(#|num)?\d+))|(p(ost)? *(o(ff(ice)?)?)? *((boîte|bin)|b)? *\d+)|(p *-?\/?(o)? *-?la boîte)|case postale|((boîte|bin)|b) *(nombre|num|#)? *\d*\d+)
OriginalL'auteur Dathan
Avec Javascript, il est plus facile d'utiliser une regex littéral comme suit:
(Pas de barres obliques inverses nécessaire!)
OriginalL'auteur ridgerunner
C'est ce que j'ai utilisé la comptabilité pour les espaces et insensible à la casse:
http://regexr.com/3cc2q
OriginalL'auteur Jonathan Marzullo
Celui-ci est plutôt bien pour nous. (php preg_match)
OriginalL'auteur mohrt
Sa a fonctionné pour moi,
OriginalL'auteur anand vishwakarma
Voici un qui correspond à 'POB', 'PO Box et " Post Office Box'. Modèle:
\\b[PO.|Post\\sOffice]*\\s?B(ox)?.*\\d+\\b
.C'est une modification de
@drudge
's solution.OriginalL'auteur bukharim96
L'expression régulière fournie ci-dessus est d'accepter PO box qui est correct.
Modifié Regex pas à accepter, c'est:
OriginalL'auteur mcvnpvsr
Nous avons couru dans les faux positifs des Boîtes postales après l'utilisation de @Dathan de réponse en production depuis quelques mois. Cette version simplifiée assure la tendance est suivie par un certain nombre afin de ne pas correspondre à des choses comme "Expo Blvd". Il permet aussi des choses comme "#123" et "B1", couramment trouvés dans les
address2
champs de l'appartement/unité/numéro de bureau. Vous pouvez jouer avec elle et ajouter votre propre cas de test ici: https://regex101.com/r/7ZUQFl/2OriginalL'auteur Rocky