您好我需要验证澳大利亚邮政编码长度为4位数。因此我使用preg_match编写了PHP代码,但它对我不起作用。你能告诉我为什么我的代码不能正常工作吗?这是我的PHP代码。
$value=(explode(",",$_POST['search']));
$value = preg_split('/[0-9]+\./', $_POST['search'], -1, PREG_SPLIT_NO_EMPTY);
if (empty($value))
{
echo "<p >Please type your postcode</p>";
//This condition work
}
else if (preg_match('(^[0-9]{4}$)',$value))
{
//This condition is not working
echo "The post code must be a 4-digit number.";
}
else
{
//This condition working
$json = file_get_contents('http://www.example/API?pcode='.$value[0].'');
答案 0 :(得分:1)
直到你回答,我采用这种方法:
<?php
$_POST['search'] = '1234'; //used for testing
$post_code = $_POST['search'];
if (empty($post_code)){
echo "<p>Please type your postcode</p>";
}else if (!preg_match('#[0-9]{4}#',$post_code)){
echo "The post code must be a 4-digit number.";
}else{
$json = file_get_contents("http://www.example/API?pcode=$post_code");
}
答案 1 :(得分:0)
检查Wikipedia中的澳大利亚邮政编码公式->
ACT:0200-0299和2600-2639。
NSW:1000-1999、2000-2599和2640-2914。
NT:0900-0999和0800-0899。
QLD:9000-9999和4000-4999。
SA:5000-5999。
TAS:7800-7999和7000-7499。
VIC:8000-8999和3000-3999。
WA:6800-6999和6000-6799
正则表达式:^(0 [289] [0-9] {2})|([1345689] [0-9] {3})|(2 [0-8] [0-9] {2 })|(290 [0-9])|(291 [0-4])|(7 [0-4] [0-9] {2})|(7 [8-9] [0-9] {2})$
通过:0200 ||| 7312 ||| 2415
失败:0300 ||| 7612 ||| 2915