我需要以每个国家/地区为基础,以特定格式验证邮政编码.

例如:

$postcode_validation = array

(

'Australia' => array('NNNN'),

'Bahrain' => array('NNN', 'NNNN'),

'Netherlands' => array('NNNN AA'),

'United States' => array('NNNNN', 'NNNNN-NNNN', 'NNNNN-NNNNNN')

);

每个国家/地区可以根据需要提供尽可能多的邮政编码格式变体;哪里:

> N =数字[0-9]

> A =字母[a-zA-Z]

>它有时允许/包含超量

因此,如果我们以澳大利亚为例,它应该验证为真:

> 1245

> 4791

> 7415

等等…

并且应该失败:

> a113

> 18q5

> 1s-s7

等等…

鉴于此,我正在尝试创建一个单一的函数,我可以使用它来验证给定国家/地区的邮政编码与邮政编码的所有变体.如果邮政编码与规则中的至少一个匹配,则函数应返回true,如果不匹配则返回false.

所以,这就是我尝试这样做的方式(从简单的方法开始):

// mapping

$postcode_validation = array

(

'Australia' => array('NNNN'),

'Bahrain' => array('NNN', 'NNNN'),

'Netherlands' => array('NNNN AA'),

'United States' => array('NNNNN', 'NNNNN-NNNN', 'NNNNN-NNNNNN')

);

// helper function

function isPostcodeValid($country, $postcode)

{

// Load Mapping

global $postcode_validation;

// Init

$is_valid = false;

// Check If Country Exists

if (!array_key_exists($country, $postcode_validation))

return false;

// Load Postcode Validation Rules

$validation_rules = $postcode_validation[$country];

// Iterate Through Rules And Check

foreach ($validation_rules as $validation_rule)

{

// Replace N with \d for regex

$validation_rule = str_replace('N', '\\d', $validation_rule);

// Check If Postcode Matches Pattern

if (preg_match("/$validation_rule/", $postcode)) {

$is_valid = true;

break;

}

}

// Finished

return $is_valid;

}

// Test

$myCountry = 'Australia';

$myPostcode = '1468';

var_dump(isPostcodeValid($myCountry, $myPostcode));

?>

这似乎通过返回true来工作.但是对于$myPostcode =’1468a’,它也会返回true;

有没有人有办法通过固定规则进行动态邮政编码验证?

更新

php 校验 邮政编码,php – 动态邮政编码验证相关推荐

  1. OTP 动态口令验证

    OTP 动态口令验证. 简介 动态口令(OTP,One-Time Password)又称一次性密码,是使用密码技术实现的在客户端和服务器之间通过共享秘密的一种认证技术,是一种强认证技术,是增强目前静态 ...

  2. 中国邮政编码.html,全国邮政编码一览表.doc

    全国邮政编码一览表.doc 全国邮政编码一览表 北 京 市 地 区 邮政编码 地 区 邮政编码 北京市 100000 通州区 101100 平谷县 101200 顺义县 101300 怀柔县 1014 ...

  3. excel导入数据校验_从Excel数据验证列表中选择多个项目

    excel导入数据校验 You've probably used an Excel data validation drop down list, where you can click the ar ...

  4. excel导入数据校验_使用Excel数据验证限制日期范围

    excel导入数据校验 Yesterday, one of my clients emailed to let me know that she was having trouble entering ...

  5. Java实现TOTP动态口令验证

    动态口令使用场景 服务器登录动态口令验证 WEB应用密码登录二次验证 银行转账动态口令 Java实现代码 package org.xbeckoning.commons.util;import org. ...

  6. 「 C++ 宏 」“DDX动态数据交换与DDV动态数据验证”浅谈

    一.前言 DDX(动态数据交换)和DDV(动态数据验证)是MFC中用于变量和控件间关联数据和控制数据的宏. 二.讲解 如:DDX_Text(pDX,IDC_EDIT1,text); 就可以把变量tex ...

  7. jQuery校验 jQuery Validate 表单验证详解

    官网地址: http://bassistance.de/jquery-plugins/jquery-plugin-validation 一导入js库 <script src="../j ...

  8. mysql md5版本校验_通过MD5校验和验证MySQL软件包的完整性

    作者:zhanhailiang 日期:2013-03-05 1).下载MySQL版本 ~/public_html> wget http://cdn.mysql.com/Downloads/MyS ...

  9. java excel 导入 加校验_POI实现excel各种验证和导入的思路总结

    制定标准 导入总是与导出相辅相成的,无规矩不成方圆.所谓的标准都是大家一同来维护和遵守的,那么首先就是制定一个模板. 这样可以减少验证的工作量. 例如时间的规范[yyyy-MM-dd],获取单元格的时 ...

最新文章

  1. Windows Phone 7 Tips (1)
  2. 什么是HLS(HTTP Live Streaming)?
  3. c++中堆、栈内存分配概念示例讲解
  4. [蓝桥杯]算法提高 道路和航路(spfa+deque+快读优化)
  5. 【转】JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)
  6. idea中Gitlab项目导入导出
  7. Android 常用设计模式——观察者模式,单例模式,Builder模式,原型模式,命令模式
  8. 使用 Github Pages 和 Hexo 搭建自己的独立博客【超级详细的小白教程】
  9. 给你这张图,你能搜索到来历吗
  10. 一阶电路暂态响应的结果分析。_【2020考研】南京邮电大学813《电路分析》考试大纲...
  11. spring boot、mybatis集成druid数据库连接池,实现mysql cluster HA负载均衡访问
  12. 微信抢号软件_快来抢微信靓号!微信小商店正式上线
  13. java工程师优秀简历模板,这原因我服了
  14. excel冻结窗口_excel怎么冻结窗口?excel冻结窗口怎么设置?
  15. mysql与gbase获取行号_mysql/gbase数据库全库库表记录数统计
  16. 计算机处理器份额,处理器市场份额排名 英特尔X86架构继续领先
  17. DAOS ARM64调测之旅
  18. 编程式路由导航连续跳转出现NavigationDuplicated报错的问题
  19. 基于人脸的常见表情识别 Task03笔记
  20. 2015年史上最全的SEO网站优化方案流程

热门文章

  1. java爬虫网易热点新闻webmagic
  2. 如何强制卸载云壳/阿里郎
  3. java syn攻击程序_SYN blood攻击
  4. AVProVideo☀️六、Unity播放PC端和安卓端视频、以及对视频的读写方法
  5. URL编码解码以及常见压缩算法和加密
  6. Sqlserver 字符串截取函数
  7. 对游戏公司运作的理解
  8. Vue 项目快速入门
  9. react 路由配置
  10. LVS+nginx负载均衡(一)-企业实战lvs负载均衡