我尝试使用regex检查印度pancard号码。
印度潘卡格式为5 Alpha - 4数字0001-9999 - 1 Alpha
I tried following regex[A-Z]{5}[0-9]{4}[A-Z]{1}
总的来说工作得很好,但对于第二个条件它不完全正确——它接受0000-9999,但我需要0001 -9999。我应该如何修改这个正则表达式?
你可以使用反向向前看来过滤掉你不想要的规则。
^(?!0+$)[0-9]{4}$
(?!0+$)
表示如果以下文本的其余部分仅由0
s组成,则测试不通过。
见证明
编辑
如果不只是数字,您可以删除^
和$
,并在[0-9]{4}
之前插入负向前看的(?!0{4})
:
[A-Z]{5}(?!0{4})[0-9]{4}[A-Z]{1}
我找到了@TonyR的答案
^[A-Z]{5}(?!0000)d{4}[A-Z]{1}$
简单检查
因为它只是检查字符的位置([A-Z]){5}([0-9]){4}([A-Z]){1}
更全面
检查第四个字母[a-zA-Z]{3}[PCHFATBLJG]{1}[a-zA-Z]{1}[0-9]{4}[a-zA-Z]{1}
根据被评估者的类型,PAN的第四个字符必须是以下之一:
C — Company
P — Person
H — Hindu Undivided Family (HUF)
F — Firm
A — Association of Persons (AOP)
T — AOP (Trust)
B — Body of Individuals (BOI)
L — Local Authority
J — Artificial Juridical Person
G — Govt