我想做PAN数的渐进正则表达式。
我的PAN编号正则表达式是"/^([a-zA-Z]){5}([0-9]){4}([a-zA-Z]){1}$/"
PAN编号格式-"AAAAADDDDA" A-字母,D-数字
为什么我想做渐进正则表达式?
我正在使用Angular 指令来设置输入字段的验证。在这方面,我面临的问题,我的泛正则表达式,但它的工作很好的渐进正则表达式。检查这里我的plunker
参考问题angularjs validate input and prevent change if invalid
有谁能给我提个建议吗?
谢谢你。
4条答案
按热度按时间ryevplcw1#
我想这会对你有帮助:
因为您希望逐步测试正则表达式,这就是它逐个字母测试输入字母的原因。
([a-zA-Z]){5}
〈-这意味着它需要5个字母(同时),因为您要测试每个字母输入,这就是它不工作的原因。例如:
AAAAA1111A
是正确的根据您的正则表达式,但AAAAA1111
或AAAAA111
或AAAAA11
或AAAAA1
等不是,这就是为什么您的正则表达式不允许输入!http://plnkr.co/edit/x9x1ZT4InGHHo2f2ZL8f?p=preview
ymdaylpp2#
在javascript中的pan验证正则表达式是
正则表达式的解释
([A-Z]){3}:-前三个字符只能在A-Z之间,且大写
(丙)|P级|高|F级|A类|T型|B| L型|J型|G){1}:-第四个字符具有特殊含义
即C代表公司,P代表个人等。
([A-Z]){1}:-第五个字符只能位于A-Z之间,且大写
([0 - 9]){4}:接下来的四个字符是数字,所以它检查这四个字符应该是数字
([A-Z]){1}:-最后一个字符也表示大写字母中的唯一字符
最后,我使用javascript函数返回true和false输出
返回正则表达式测试(pan);(如果平移符合正则表达式,则返回true,否则返回false)
2ledvvac3#
我可以给你这段代码:
这段代码来自塔塔的网站,他们知道自己在做什么,而且经常更新验证。
g9icjywg4#
matches()使用的正则表达式是基于用户的额外输入而形成的,look-behinds检查前面的第4个字符,如果第4个字母是P,我们检查姓氏中的第一个字母,如果第4个字母不是P,我们检查实体名称中的第一个字母:
示例代码
Click here