我为 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})?$^";
}
编辑:
以下是 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 将是:
诺拉德21STS
OPSKATWW
仅当字符串包含以下代码时,正则表达式才应返回 true:其长度为 8 个或 11 个字符,并且包括:
银行代码 - 4 个字母字符 国家代码 - 2 个字母 位置代码 - 2 个字母数字字符,零除外 分行代码 - 3 个字母数字字符
这些是规格。
所以长度可以是 11 或 8,前 4 可以是任何东西,然后 2 个字母是必须的,然后是 2 个数字和可选的 3 个字母数字。
以下内容无效:
abcdefxx
abcdefxxyyy
这些也是无效的:
aaa11xx
aaaa11xxyyy
等等。