如何 preg_match KRA Pin 号码

How to preg_match KRA Pin no

在处理人力资源系统时,我在验证肯尼亚税务局的 PinNo 时遇到了问题。该字符串的长度应为 11。该字符串应以字母 aA 开头,然后是任何数字 [0-9] 并以字符 [a-zA-Z].[=16 结尾=]

这是我的实现:

$pattern = '/^\A(a|A){1}\d{9}[a-zA-Z]{1}$/';
$pinno='A012345678K';

if (!(preg_match($pattern, $pinno))) {
    return false;
} else {
    return true;
}

您可以将代码重新修改为

$pattern = '/^a\d{9}[a-z]$/i';
return preg_match($pattern, $pinno);

参见regex demo。模式将匹配:

  • ^ - 字符串开头
  • a - aA 因为 i 是不区分大小写的修饰符
  • \d{9} - 九位数
  • [a-z] - 任何 ASCII 字母
  • $ - 字符串结尾。

注意:

  • ^\A 匹配字符串的开头两次,您可以保留其中任何一个锚点
  • 要匹配集合中的字符,建议使用字符类,因此(a|A) -> [aA]。但是,您可以仅使用 a 并添加不区分大小写的修饰符
  • {1} 限制修饰符总是多余的,因为默认情况下任何原子都匹配一次。

关于 $ 的注释:它也将匹配字符串中最后一个换行符之前。要避免这种行为,请将 $ 替换为 \z,或添加 D 修饰符:'/^a\d{9}[a-z]$/iD'.