2009-09-04 19 views
5

私は米国の住所を検証するにはどうすればいいか分かっていますが、適切な方法はないかもしれませんが、基本的な方法はあります:#、ストリート名、市区町村、州、郵便番号。PHP regexp米国の住所

任意のアイデアをいただければ幸いです。ありがとう

+0

あなたはRegexで検証しようとしているアドレスのどの部分ですか?全部、郵便番号? –

+0

私はこれまでに述べたように、文字列が数字(任意のサイズ)で始まり、その後に文字(ストリート名)と(都市)、2文字の状態コードが続くかどうかを調べようとしています。 –

+0

あなたがちょうど言及したことの問題は、アドレスが数字(すなわち、1つのMicrosoft Way、PO Boxes)で始まる必要はなく、通り名は文字(高速道路、番号付き通り)を持つ必要がないということです。 – jimyi

答えて

2

正規表現を使用してこれを行うにはアドレスが多すぎます。アドレスを検証できるWebサービスを見つけるほうがよいでしょう。 USPS has one - あなたはそれを使用するための許可を要求する必要があります。

+0

実際、それは変種ではなく、郵送先住所が正規ではないという事実です。少なくとも、私はそうは思わない。誰かがそれが証明できるなら、それをしてください - 私は興味があるでしょう。 –

4

試してください。誰かが郵便局の箱やアパート番号などを持っている可能性が高く、本当にあなたに怒ってしまいます。 「普通の」通りの名前でさえも、ニューヨーク市の125番街(および他の多くの都市)のような数字を持つことができます。郊外でさえ、いくつかの番号の通りを持つことができます。

都市名にはスペースを使用できます。

+0

私は "East South Boulder Road"という通りに住んでいました。すなわち、「サウスボルダーロード」と名付けられた通りの東部です。これは、私の住所を求める人々に説明するのはすばらしい楽しみでした。 –

+4

オーストラリアには1770と呼ばれる*タウン*があります。次の質問に答えるために、郵便番号は4677です。 –

+0

http://en.wikipedia.org/wiki/1770,_Queensland –

4

住所の一部を別のフィールド(ストリート名、市区町村、州、郵便番号)に入力し、そのようなフィールドに適切な妥当性検査を使用するようにユーザーに依頼します。これは一般的な習慣です。また

、あなたが3つのカンマで区切られた4つの文字列にマッチする正規表現の最も単純にしたい場合は、この方法を試してください。

/^(.+),([^,]+),([^,]+),([^,]+)$/ 

ものが一致した場合は、アドレスのコンポーネントをチェックするために一致する追加のパターンを使用することができます。住所の有効性を確認する方法はありませんが、郵便番号と州コードのテキストを入力することができます。

0

これは防弾対策ではありませんが、住所はストリート番号の数字で始まり、5または9の数字の郵便番号で終わると仮定しています。

([0-9] {1} [\ S \ S] * [0-9] {5}( - ???[0-9] {4}))

同様私は防弾ではないと言っていますが、過去にはそれほど成功していませんでした。

0

ここニュージーランドでオーバー、あなたはNew Zealand Postから郵便アドレスの公式リストのライセンスを取得することができます - あなたのとニュージーランドのすべての有効な住所を表に移入するために必要なデータを与えます。このリストに照らして検証

は、正規表現を思い付くしようとしているよりもずっと簡単です - あなたは3例で終わるよう精度は、同様に高いはるか次のとおりです。

  • アドレスあなたは、検証しているあなたはそれが本当のアドレス
  • である知っているので、あなたはそれはおそらくアドレスあなたの本当のアドレス
  • である知っているので、あなたが検証しているアドレスは、リストの1つに非常に似て、リストに含まれています検証はリスト内では似ていないので、実際のものとそうでないものがあります。それはあなたが検証しているアドレスにはない実アドレス
  • かもしれないので、あなたが正規表現で取得します最高のは、あなたがマッチに正規表現を検証しているアドレス

    • ある

    正規表現と一致するので、実際の住所ではない可能性があります。

郵便番号を知る必要があるのは、多くの企業にとっては非常に一般的な状況なので、リストのライセンスはほとんどの地域で可能です。

唯一のスティッキービットは価格設定されます。

2

を読みます:ユーザーに異なるフィールドにデータを入力させる(1つはzip用、1つは市用、もう1つは#/ street名用)で始まる。

/^[0-9]{1,7} [a-zA-z0-9]{2,35}\a*/ 
+0

その正規表現は、後で複合名またはST/DR/AVEで動作するでしょうか?私は "1234 Old Statesville Rd"または "123 Main ST"を考えています。ストリートネーム部分にはスペースは入れません。 – rajah9