2010-09-21 7 views
2

J'essaie de modifier ce script pour accepter, - et 'pour que cette regex valide les adresses sur un formulaire est-il écrit correctement?JavaScript Expression régulière pour valider une adresse

^[a-zA-Z0-9\s\,\''\-]*$ 
+0

"est-il écrit correctement?" - l'as-tu essayé toi-même? – casablanca

+3

Si vous parlez d'adresses de rues, les valider n'est pas trivial. Les adresses peuvent apparaître dans beaucoup, beaucoup de formats, et même si quelque chose ressemble à une adresse cela ne signifie pas que c'est une adresse valide valide (c.-à-d. "123 Main Street" ressemble à une adresse, mais peut-être a seulement des adresses jusqu'à # 90). –

+0

Dans tous les cas, votre expression est "correcte" en ce sens que c'est une syntaxe valide et qu'elle ne plante pas. Cependant, il est très peu spécifique et correspond à toute chaîne contenant uniquement des lettres, des chiffres, des espaces, des virgules, des guillemets simples ou des tirets. –

Répondre

11

Cela fonctionne mais il y a quelques échappements redondants.

Vous n'avez pas besoin d'échapper la virgule, les guillemets simples et les tirets. Vous échappez seulement quand le char a une signification spéciale et que vous voulez l'utiliser littéralement. A l'intérieur d'une classe char:

  • - est une méta char, mais pas quand il apparaît au début ou à la fin. Dans votre cas, il apparaît à la fin si il a perdu sa signification particulière (de gamme faisant).
  • ] est un méta-char qui marque la fin de la classe char. Donc, si vous voulez faire ] partie de la classe char, vous avez besoin de pour y échapper.

Vous pouvez écrire votre regex comme:

^[a-zA-Z0-9\s,'-]*$ 
+0

Merci qui a fonctionné. – Amen

0

Si vous voulez juste d'accepter l'un de ces personnages (ou une chaîne vide), alors vous pouvez modifier ce que vous avez actuellement:

/^[a-z0-9\s,'-]*$/i 

Ce n'est absolument pas une adresse validateur , toutefois. Je vous suggère d'en apprendre plus sur les expressions régulières de quelque part. http://www.regular-expressions.info/examples.html est un bon endroit pour commencer.

0

Dans les commentaires, Daniel Vandersluis a un très bon point: Les adresses ne peuvent pas être vérifiées par une simple expression régulière. L'USPS a une division entière appelée CASS (Coding Accuracy Support System) dédiée à la vérification des données d'adresse. Je travaille pour SmartyStreets où nous fournissons des services certifiés CASS pour les personnes. En fait, si vous êtes vraiment intéressé par bonnes adresses, je vais vous aider personnellement à commencer (il est vraiment facile avec Javascript, par exemple. Prend seulement une minute.)

1

Au-dessus de réponse Regex donne false lorsque votre entrée est "House No.-780". L'utilisateur peut ajouter "." à l'adresse, donc nous devons faire regex qui accepte le point également. Vous pouvez utiliser cette regex

/^[a-zA-Z0-9\s,.'-]{3,}$/ . 

Ce regex accepte trois caractères minimum et il n'y a pas de limite sur les caractères max. Les caractères peuvent inclure des alphabets a-z, A-Z, des espaces, des virgules (,), des points (.), Des apostrophes (') et des tirets (-).

Questions connexes