我为
PHP函数pregmatch写了一个正则表达式,就是这样的:
其长度为8或11个字符,包括: @H_301_3@银行代码 – 4个字母字符
国家代码 – 2个字母
位置代码 – 2个字母数字字符,零除外
分行代码 – 3个字母数字字符 @H_301_3@这些是规格. @H_301_3@所以长度可以是11或8,前4个可以是任何东西,那么2个字母是必须的,那么2个数字和可选的3个字母数字. @H_301_3@以下内容无效: @H_301_3@abcdefxx @H_301_3@abcdefxxyyy @H_301_3@这些也是无效的: @H_301_3@aaaa11xx @H_301_3@aaaa11xxyyy @H_301_3@等等.
^([a-zA-Z]){4}([a-zA-Z]){2}([0-9a-zA-Z]){2}([0-9a-zA-Z]{3})?$^@H_301_3@现在我需要检查一个BIC字符串的一致性. @H_301_3@有什么问题吗?它总是正确的.我不知道为什么. @H_301_3@我使用的代码是这样的:
/** * 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})?$^"; }@H_301_3@编辑: @H_301_3@以下是来自swift帐户的BIC格式的一些参考: @H_301_3@http://www.sage.co.uk/sage1000v2_1/form_help/workingw/subfiles/iban_and_bic.htm @H_301_3@http://en.wikipedia.org/wiki/ISO_9362 @H_301_3@http://www.swift.com/products_services/bic_and_iban_format_registration_bic_details?rdct=t @H_301_3@BIC的一个例子是: @H_301_3@NOLADE21STS @H_301_3@OPSKATWW @H_301_3@如果字符串由以下代码组成,那么正则表达式应该只返回true:
其长度为8或11个字符,包括: @H_301_3@银行代码 – 4个字母字符
国家代码 – 2个字母
位置代码 – 2个字母数字字符,零除外
分行代码 – 3个字母数字字符 @H_301_3@这些是规格. @H_301_3@所以长度可以是11或8,前4个可以是任何东西,那么2个字母是必须的,那么2个数字和可选的3个字母数字. @H_301_3@以下内容无效: @H_301_3@abcdefxx @H_301_3@abcdefxxyyy @H_301_3@这些也是无效的: @H_301_3@aaaa11xx @H_301_3@aaaa11xxyyy @H_301_3@等等.
你使用^作为分隔符?你可能想要一些更像:
'/^[a-z]{6}[0-9a-z]{2}([0-9a-z]{3})?\z/i'