在研究人力资源系统时,我遇到了验证肯尼亚税务局(Kenya Revenue Authority)的PinNo的问题。字符串的长度应为11。字符串应以字母a
或A
开头,然后以任何数字[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;
}
答案 0 :(得分:0)
您可以将代码重新修改为
$pattern = '/^a\d{9}[a-z]$/i';
return preg_match($pattern, $pinno);
请参见regex demo。该模式将匹配:
^
-字符串的开头a
-a
或A
,因为i
是不区分大小写的修饰符\d{9}
-九位数字[a-z]
-任意ASCII字母$
-字符串的结尾。注意:
^\A
匹配字符串的开头两次,可以保留这些锚点之一(a|A)
-> [aA]
。但是,您可以仅使用a
并添加不区分大小写的修饰符{1}
限制修饰符始终是多余的,因为默认情况下任何原子都匹配一次。关于$
的注释:它也将匹配字符串中最后一个换行符。为避免这种情况,请将$
替换为\z
,或添加一个D
修饰符:'/^a\d{9}[a-z]$/iD'
。