一、香港通行证
香港通行证,正式名称为港澳居民来往内地通行证,其编号格式有着明确且固定的规则。编号以大写英文字母 H 作为起始,随后紧跟 8 位数字。为切实保证编号的唯一性与合法性,运用正则表达式进行格式验证是极为有效的手段。
正则表达式
/^H[0-9]{8}$/
表达式解析
- ^:此符号代表字符串的起始位置,表明匹配必须从字符串的开头开始。
- H:明确规定通行证编号的首字符必须为大写字母 H。
- [0-9]{8}:[0-9]表示匹配 0 到 9 之间的任意一个数字,{8}则限定了这样的数字必须连续出现 8 次。
- $:表示字符串的结束位置,意味着匹配必须到字符串的末尾结束。
测试用例
- 有效输入:
-
- H12345678:完全符合香港通行证编号规则,首字母为 H,后续接 8 位数字,能够通过正则表达式的匹配验证。
-
- H98765432:同样满足规则,首字母正确,8 位数字组合合理,可顺利匹配。
- 无效输入:
-
- h12345678:首字母为小写 h,不符合编号必须以大写 H 开头的规则,无法通过匹配。
-
- H1234567:数字部分不足 8 位,不满足规则要求,匹配失败。
-
- H123456789:数字部分超出 8 位,不符合格式,不能通过验证。
二、澳门通行证
澳门通行证的编号规则与香港通行证极为相似。它以大写英文字母 M 作为开头,紧接着是 8 位数字。
正则表达式
/^M[0-9]{8}$/
表达式解析
该正则表达式结构与香港通行证的类似,只是将起始字母由 H 替换为 M。^表示字符串起始,M 指定开头字母,[0-9]{8}要求后续紧跟 8 位数字,$表示字符串结束。
测试用例
- 有效输入:
-
- M56781234:符合澳门通行证编号格式,首字母 M 加上 8 位数字,能被正则表达式成功匹配。
-
- M34567890:同样满足规则,可通过匹配验证。
- 无效输入:
-
- m56781234:首字母为小写 m,不满足大写 M 开头的要求,匹配失败。
-
- M5678123:数字位数不足 8 位,不符合格式,无法通过验证。
-
- M567812345:数字部分超过 8 位,不能被正则表达式识别。
三、台湾通行证
台湾居民来往大陆通行证的编号规则与前两者有所不同。它没有字母前缀,直接由 8 位或 10 位数字构成。
正则表达式
/^[0-9]{8,10}$/
表达式解析
^表示字符串起始,[0-9]匹配 0 到 9 的任意数字,{8,10}说明数字位数可以是 8 位、9 位或者 10 位,$代表字符串结束。
测试用例
- 有效输入:
-
- 12345678:8 位数字,符合台湾通行证编号规则,可通过匹配。
-
- 1234567890:10 位数字,也在规则允许范围内,能被正则表达式识别。
- 无效输入:
-
- 1234567:数字位数仅 7 位,少于规定的 8 位,匹配失败。
-
- 12345678901:数字位数达到 11 位,超出了 10 位的上限,无法通过验证。
-
- A12345678:包含字母 A,不符合纯数字的要求,不能被匹配。
四、外国护照
外国护照的编号格式因不同国家而存在显著差异。为了简化验证流程,这里我们假设护照编号由 1 到 16 位数字和字母(不区分大小写)组成,并且编号不能全是数字或全是字母。
正则表达式
/^(?![0-9]+$)(?![A-Za-z]+$)[0-9A-Za-z]{1,16}$/
表达式解析
- ^:表示字符串的起始。
- (?![0-9]+$):这是一个负向前瞻表达式,用于确保整个字符串不是仅由数字组成。
- (?![A-Za-z]+$):同样是负向前瞻,保证字符串不是仅由字母组成。
- [0-9A-Za-z]{1,16}:[0-9A-Za-z]表示匹配数字或字母,{1,16}则限定其长度在 1 到 16 位之间。
- $:表示字符串的结束。
测试用例
- 有效输入:
-
- A1b2C3d4:包含数字和字母,长度为 8 位,符合规则,可通过匹配。
-
- 1a2B3c4D5e:长度为 10 位,同时包含数字和字母,能被正则表达式识别。
-
- a1B2c3D4E5F6G7:长度为 16 位,满足数字和字母混合的要求,匹配成功。
- 无效输入:
-
- 12345678:全是数字,不符合不能全为数字的规则,匹配失败。
-
- abcdefgh:全是字母,不满足要求,无法通过验证。
-
- A1b2C3d4E5F6G7H:长度达到 17 位,超出了 16 位的上限,不能被正则表达式匹配。
-
- A1b2C3d4!:包含了除数字和字母之外的特殊字符 “!”,不符合格式,匹配不成功。