^([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})?$^";
}
编辑:
这里是来自swift账户的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
等等。