次のようなphp関数pregmatchの正規表現を作成しました。
^([a-zA-Z]){4}([a-zA-Z]){2}([0-9a-zA-Z]){2}([0-9a-zA-Z]{3})?$^
ここで、BIC 文字列の一貫性を確認する必要があります。
何かがおかしい... それは常に正しい。そして、私には理由がわかりません。
私が使用するコードは次のようなものです。
/**
* Checks the correct format from the
* @param string $bic
* @return boolean
*/
public function checkBic($bic)
{
$bic = $this->cleanFromSeparators($bic);
if (preg_match($this->getBicCompare(), $bic)) {
return true;
} else {
return false;
}
}
private function getBicCompare()
{
return "^([a-zA-Z]){4}([a-zA-Z]){2}([0-9a-zA-Z]){2}([0-9a-zA-Z]{3})?$^";
}
編集:
以下は、迅速なアカウントからの BIC 形式の参照です。
http://www.sage.co.uk/sage1000v2_1/form_help/workingw/subfiles/iban_and_bic.htm
http://en.wikipedia.org/wiki/ISO_9362
http://www.swift.com/products_services/bic_and_iban_format_registration_bic_details?rdct=t
BIC の例は次のとおりです。
NOLADE21STS
OPSKATWW
正規表現は、文字列が次のコードで構成されている場合にのみ true を返す必要があります。その長さは 8 文字または 11 文字で、以下で構成されています。
銀行コード - 英字 4 文字 国コード - 2 文字 ロケーション コード - ゼロを除く 2 文字の英数字 支店コード - 3 文字の英数字
これらが仕様です。
したがって、長さは 11 または 8 のいずれかで、最初の 4 は何でもかまいません。次に 2 文字が必須で、次に 2 つの数字とオプションの 3 つの英数字です。
以下は無効です。
abcdefxx
abcdefxxyyy
これらも無効です。
aaaa11xx
aaaa11xxyyy
等々。