港澳台居民居住证的正则怎么解读?

作者站长头像
站长
· 阅读数 6

在网上搜了下港澳台居民居住证的正则表达式/^8[123]0000(?:19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dX]$/,但是看不懂各项是什么意思(只能看懂是8 1/2/3 0000开头),能来个正则大佬帮忙解释下么?

回复
1个回答
avatar
test
2024-06-28
/^8[123]0000(?:19|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}[\dX]$/

港澳台居民居住证中的公民身份号码地址码的编号规则为:

  1. 香港居民使用810000。
  2. 澳门居民使用820000。
  3. 台湾居民使用830000。公民身份号码共18位,前6位为行政区划代码,第7至14位为出生日期码,第15至17位为顺序码,第17位也可以辨认性别,奇数为男,偶数为女,第18位为校验码。

根据规则看就明白了举例: 830000-19920130-002-2

  • ^:表示匹配字符串的开头。$:表示匹配字符串的结尾。都使用时精确匹配
  • 8[123]0000:这部分匹配以 "830000"、"810000" 或 "820000" 开头的数字。
  • (?:19|20):这是一个非捕获性分组,匹配 "19" 或 "20"。
  • \d{2}:匹配两位数字,通常用于表示年份的后两位。
  • (?:0[1-9]|1[0-2]):另一个非捕获性分组,匹配 "01" 到 "09" 或 "10" 到 "12" 的月份。
  • (?:0[1-9]|[12]\d|3[01]):非捕获性分组,匹配 "01" 到 "09"、"10" 到 "29" 或 "30" 到 "31" 的日期。
  • \d{3}:匹配三位数字,通常用于表示个人识别信息的一部分。
  • [\dX]:匹配一个数字或大写字母 "X",通常用于表示校验位。
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容