如何使用正则表达式检查有效的印度卡片



我尝试使用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+$)表示如果以下文本的其余部分仅由0s组成,则测试不通过。

见证明

编辑

如果不只是数字,您可以删除^$,并在[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

最新更新