我尝试使用正则表达式检查印度pancard数。印度泛卡格式为5字母-4数字0001-9999 - 1字母我试着用正则表达式[A-Z]{5}[0-9]{4}[A-Z]{1}一般来说,它运行良好,但对于第二个条件就不完全正确了--它接受0000-9999,但我需要0001 - 9999。
[A-Z]{5}[0-9]{4}[A-Z]{1}
l7wslrjt1#
您可以使用negative lookahead过滤掉不需要的规则。
^(?!0+$)[0-9]{4}$
(?!0+$)
0
参见proof
如果不仅仅是数字的问题,可以删除^和$,并在[0-9]{4}之前插入负的前瞻(?!0{4}):
^
$
[0-9]{4}
(?!0{4})
[A-Z]{5}(?!0{4})[0-9]{4}[A-Z]{1}
g2ieeal72#
我通过@TonyR找到了答案
^[A-Z]{5}(?!0000)\d{4}[A-Z]{1}$
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的第四个字符必须是以下字符之一,具体取决于被评估人的类型:
([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}
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
3条答案
按热度按时间l7wslrjt1#
您可以使用negative lookahead过滤掉不需要的规则。
(?!0+$)
表示如果以下文本的其余部分仅由0
组成,则测试失败。参见proof
编辑
如果不仅仅是数字的问题,可以删除
^
和$
,并在[0-9]{4}
之前插入负的前瞻(?!0{4})
:g2ieeal72#
我通过@TonyR找到了答案
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的第四个字符必须是以下字符之一,具体取决于被评估人的类型: