我有以下的代码来验证英国的邮政编码我用这作为笨验证规则,但我得到以下警告消息:屋邮编验证警告消息
严重性:警告
消息:的preg_match()[function.preg匹配]:编译失败:错过)在偏移426
文件名:型号/ user_profile.php
行号:126
它总是返回false以及无论输入哪个邮政编码都可以有人发现什么是错的?
//Check and validate uk postcode
function _valid_postcode($field) {
$regex = '!^([A-PR-UWYZa-pr-uwyz]([0-9]{1,2}|([A-HK-Ya-hk-y][0-9]|[A-HK-Ya-hk-y][0-9]([0-9]|[ABEHMNPRV-Yabehmnprv-y]))|[0-9][A-HJKS-UWa-hjks-uw])\{0,1}[0-9][ABD-HJLNP-UW-Zabd-hjlnp-uw-z]{2}|([Gg][Ii][Rr]\0[Aa][Aa])|([Ss][Aa][Nn]\{0,1}[Tt][Aa]1)|([Bb][Ff][Pp][Oo]\{0,1}([Cc]\/[Oo]\)?[0-9]{1,4})|(([Aa][Ss][Cc][Nn]|[Bb][Bb][Nn][Dd]|[BFSbfs][Ii][Qq][Qq]|[Pp][Cc][Rr][Nn]|[Ss][Tt][Hh][Ll]|[Tt][Dd][Cc][Uu]|[Tt][Kk][Cc][Aa])\{0,1}1[Zz][Zz]))$!';
$result = preg_match($regex, $field);
if($result > 0) {
return TRUE;
} else {
$this->error_message($field, 'Please enter a valid postcode');
//return FALSE;
}
}
你可以通过使它不区分大小写来简化你的正则表达式。 – Xophmeister 2012-01-18 10:31:09
似乎不喜欢SW1A 1AA,这是一个有效的英国邮政编码 – 2012-01-18 10:33:09