【发布时间】:2012-01-18 10:20:42
【问题描述】:
我有以下代码来验证英国邮政编码我在 codeigniter 中使用它作为验证规则,但我收到以下警告消息:
严重性:警告
消息:preg_match() [function.preg-match]: Compilation failed: missing ) at offset 426
文件名:models/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;
}
}
【问题讨论】:
-
您可以通过使其不区分大小写来简化您的正则表达式。
-
不喜欢 SW1A 1AA,这是一个有效的英国邮政编码
标签: php regex validation codeigniter