2010-02-27 4 views
0

J'ai des chaînes comme suitexpressions régulières pour valider une adresse postale

field_zip_code:"48103" 

taxonomy:88 field_zip_code:"48103" 

taxonomy:88 field_state:"MI" field_zip_code:"48103" 

De là, je veux extraire des valeurs variables comme 48103,88,MI

i besoin des expressions régulières en PHP,

Merci à l'avance Kamal

+0

Il existe un moyen d'écrire une regex qui réussit sur la dernière chaîne. voulez-vous que l'expression régulière échoue sur les deux premiers? – stillstanding

+0

Merci pour toute aide –

Répondre

0

Vous feriez mieux d'utiliser trois expressions régulières pour les trois champs que vous voulez

field_zip_code:"(\d+)" 
taxonomy:(\d+) 
field_state:"(\w+)" 
+0

un peu primitif hein? – rook

+1

si par primitif vous voulez dire lisible, alors oui –

0

Il n'y a pas la grammaire pour appliquer la regex :(

0

Si les 3 champs sont toujours commandés comme ça,

^(?:taxonomy:(\d+))?\s*(?:field_state:"([^"]+)")?\s*(?:field_zip_code:"([^"]+)")$ 

Sinon, effectuer 3 matchs en tant que @Otto suggéré.

0

Je vous encourage également à penser aux codes postaux non standard. 009HH, par exemple, est un ZIP valide dans le système postal américain. En outre, pensez aux codes postaux canadiens si votre entreprise a besoin de les soutenir - ils sont dans un format radicalement différent.

+0

"009HH"? google maps n'en a jamais entendu parler –

+0

Google n'est pas la fin-tout-être-tout. Voir ceci, par exemple: http://www.laprit/zipcode/id_009HH.html –

+0

Bien essayé, mais le système "US Postal Mail system" n'est que des numéros: https://tools.usps.com/go/ ZipLookupAction_input. –