1

英国の郵便番号を 2 つに分割する必要があります。前半を取得するコードがいくつかありますが、すべてをカバーしているわけではありません (gir0aa など)。英国のすべての郵便番号を検証し、それを前半と後半に分割するより良いものはありますか? ありがとう。

function firstHalf($postcode) {
if(preg_match('/^(([A-PR-UW-Z]{1}[A-IK-Y]?)([0-9]?[A-HJKS-UW]?[ABEHMNPRVWXY]?|[0-9]?[0-9]?))\s?([0-9]{1}[ABD-HJLNP-UW-Z]{2})$/i',$postcode))
    return preg_replace('/^([A-Z]([A-Z]?\d(\d|[A-Z])?|\d[A-Z]?))\s*?(\d[A-Z][A-Z])$/i', '$1', $postcode);
}

ig62ts を ig6 に、または cm201ln を cm20 に分割します。

4

2 に答える 2

4

incode は常に 1 桁の数字の後に 2 つの英字が続くため、分割する最も簡単な方法は、最後の 3 文字を切り捨てることです。これにより、簡単に検証できます。

スペースはすべて削除してください。スペースは、人間が読みやすくするためだけに使用されます。

残る最初の部分はアウトコードです。これは、1 文字の英字の後に 1 桁または 2 桁の数字を続けることができます。2 つの英字の後に 1 桁または 2 桁の数字が続きます。または、1 つまたは 2 つの文字の後に 1 つの数字が続き、その後に追加の英字が続きます。

注目すべき例外がいくつかあります。SAN TA1 は、GIR 0AA と同様に認識される郵便番号です。しかし、これらは標準パターンに従わない唯一の 2 つです。

郵便番号が有効かどうかをテストするには、正規表現では十分ではありません...その情報を取得するには、ルックアップを行う必要があります。

于 2012-02-04T21:46:05.583 に答える
2

ここの情報に基づいて検証を気にしない場合(ページの下部に、あなたのものを含むさまざまな正規表現があります)http://en.wikipedia.org/wiki/Postcodes_in_the_United_Kingdomアンギラ以外のすべてに使用できます

  $str = "BX3 2BB";
  preg_match('#^(.*)(\s+)?(\d\w{2})$#', $str, $matches);
  echo "Part #1 = " . $matches[1];
  echo "<br>Part #2 = " . $matches[3];
于 2012-02-05T02:24:05.210 に答える