3

我正在尝试验证英国国民保险号码。作为表格的一部分。显然它也需要验证服务器端,但我正在使用新的:valid :invalidCSS 伪样式为用户提供有关表单的即时反馈。

<input type="text" required="required" pattern="Foo"/>

我根本不精通正则表达式。任何人都可以解决这个谜题并为我自己和其他人创建一个正则表达式以在pattern="#"属性内使用吗?

如果有帮助,之前有人已经大致回答过这个问题:Regular Expression to validate UK National Insurance Number。然而,经过测试,似乎没有一个答案有效。

一点英国国民保险号码信息

格式

号码的格式是两个前缀字母、六个数字和一个后缀字母。

通常使用的示例是AB123456C.

通常,该数字打印有空格以配对数字,如下所示:AB 12 34 56 C.

道路规则

  • 前两个字母 都不能是D、、、、或。第二个字母也不能FIQUVO
  • 前缀BG, GB, NK, KN, TN,NTZZ未分配。
  • 后缀字母是A,B或.CD
4

3 回答 3

6

This one should suit your needs:

^(?!BG|GB|NK|KN|TN|NT|ZZ)[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z](?:\s*\d{2}){3}\s*[A-D]$

Regular expression visualization

Visualization by Debuggex

Demo:

var regex = /^(?!BG|GB|NK|KN|TN|NT|ZZ)[A-CEGHJ-PR-TW-Z][A-CEGHJ-NPR-TW-Z](?:\s*\d{2}){3}\s*[A-D]$/;
var input = document.querySelector("input");
var span = document.querySelector("span");

input.addEventListener("input", function (event) {
  span.innerHTML = regex.test(event.target.value) ? "✔" : "✗";
}, false);
<input type="text" placeholder="Ex: AB 12 34 56 D" /> <span></span>

于 2013-07-29T16:17:59.677 回答
1

使用 NEST 提供的最新列表,正则表达式应该是(假设没有空格)

R = new Regex("

(^[AEHKLTYZ]{1}[ABEHK-MPR-TW-Z}{1}
|^[B]{1}[ABEK-MT]{1}
|^[C]{1}[ABEHKLR]{1}
|^[G]{1}[Y]{1}
|^[J]{1}[A-CEGHJ-NPR-TW-Z]{1}
|^[M]{1}[AWX]{1}
|^[N]{1}[ABEHLMPRSW-Z]{1]
|^[O]{1}[ABEHK-MPRSX]{1}
|^[P]{1}[A-CEGHJ-NPR-TW-Y]{1}
|^[R]{1}[ABEHKMPR-TW-Z]{1}
|^[S]{1}[A-CEGHJ-NPR-TW-Z]{1}
|^[W]{1}[ABEK-MP]{1})[0-9]{6}[A-DFM]{1}$");
于 2014-04-16T10:39:07.517 回答
-1

或者试试这个:

^[a-zA-Z]{2}[0-9]{6}[A-Za-z]{1}$
于 2013-10-23T11:30:12.937 回答