繁体   English   中英

正则表达式以验证国民保险号

[英]RegEx to validate National Insurance Number

我正在尝试在JS中使用一些RegEx来验证国民保险号码。

^(?i:[a-z-[dfiquv]])(?i:[a-z-[dfiquvo]])\d{6}(?i:a|b|c|d)$

这取自不是JS的语言,但是如何在JS中使用此规则?

我想我应该在这里转义一些字符。

谢谢!

您的模式与此等效:

/^[abceghj-prstw-z][abceghj-nprstw-z]\d{6}[abcd]$/i

出于以下原因,原始模式在javascript中不起作用:

XRegExp(javascript regex引擎)不支持字符类减法。 因此, [az-[dfiquv]]将被视为:

[a-z-[dfiquv] # a character class that contains:
              #     the character range a-z
              #     -
              #     [
              #     the (duplicate) letters: dfiquv

]             # followed by a literal ]

. 关于原始模式的其他注意事项:XRegExp在非捕获组语法中不支持inline修饰符:( (?i:......) 由于所有模式似乎都不区分大小写,因此最好的方法是为所有模式添加修饰符,如下所示: /... pattern .../i并删除不需要的非捕获组。

这与JS兼容的正则表达式相当接近,只需稍作更改即可:

/^(:[a-z][dfiquv])(:[a-z][dfiquvo])\d{6}(:[abcd])$/i

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM