如何preg_match KRA引脚号

时间:2018-07-27 11:24:26

标签: php regex preg-match

在研究人力资源系统时,我遇到了验证肯尼亚税务局(Kenya Revenue Authority)的PinNo的问题。字符串的长度应为11。字符串应以字母aA开头,然后以任何数字[0-9]结束,并以字符[a-zA-Z]结尾。

这是我的实现方式:

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

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

1 个答案:

答案 0 :(得分:0)

您可以将代码重新修改为

$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'