如何在angularjs中做国家保险号码正则表达式

时间:2019-02-27 07:54:24

标签: angularjs

这是我的正则表达式^[A-Z]{2}[0-9]{6}[A-Z]{1}?$

我正在angularjs ng-pattern-restrict中使用此表达式。我无法在输入字段中输入任何内容。

如果我使用^[A-Z]{0,2}[0-9]{0,6}[A-Z]{0,1}?$:则此表达式可以输入三个字母,但不能输入数字。

如果我要输入两个字母,则只能输入六个数字。如果我要输入三个字母,则不能输入数字

我需要这样的结果:PP123456P表达式。

任何人都可以帮助我

2 个答案:

答案 0 :(得分:0)

 ^[A-Z]{0,2}[0-9]{1,6}[A-Z]{1}?$ 

应该工作,您可以输入3个字母的原因是,允许第二组的大小为0-6,然后当您输入3个字母时,它与前2个字母组(长度为0的数字组)匹配比赛,最后是最后的Alpha。通过将其更改为1-6,您可以强制输入介于1到6之间的数字。

答案 1 :(得分:0)

您似乎在正则表达式中有点多余,并且不太确定要使用[A-Z]{1}?做什么,这应该是可选字母吗?

尽管与您可以使用的国民保险号码的实际验证规则相比,这很简单

^[A-Z]{2}[0-9]{6}[A-Z]$

打破这个...

  • ^必须在字符串开头匹配
  • [A-Z]{2}正好在A-Z范围内的2个字母
  • [0-9][6]恰好6位数字,范围为0-9
  • [A-Z]正好在A-Z范围内的1个字母
  • $在之前的比赛之后不能再有其他