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

sqxo8psd  于 2023-02-05  发布在  其他
关注(0)|答案(3)|浏览(157)

我尝试使用正则表达式检查印度pancard数。
印度泛卡格式为5字母-4数字0001-9999 - 1字母
我试着用正则表达式[A-Z]{5}[0-9]{4}[A-Z]{1}
一般来说,它运行良好,但对于第二个条件就不完全正确了--它接受0000-9999,但我需要0001 - 9999。

l7wslrjt

l7wslrjt1#

您可以使用negative lookahead过滤掉不需要的规则。

^(?!0+$)[0-9]{4}$
  • (?!0+$)表示如果以下文本的其余部分仅由0组成,则测试失败。

参见proof

编辑

如果不仅仅是数字的问题,可以删除^$,并在[0-9]{4}之前插入负的前瞻(?!0{4})

[A-Z]{5}(?!0{4})[0-9]{4}[A-Z]{1}
g2ieeal7

g2ieeal72#

我通过@TonyR找到了答案

^[A-Z]{5}(?!0000)\d{4}[A-Z]{1}$
mwg9r5ms

mwg9r5ms3#

简单检查
因为它只是检查字符的位置
([A-Z]){5}([0-9]){4}([A-Z]){1}
更全面
检查第4个字母
[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

相关问题