我正在尝试验证英国国民保险号码。作为表格的一部分。显然它也需要验证服务器端,但我使用新的:valid
:invalid
CSS伪样式为用户提供表单的即时反馈。
<input type="text" required="required" pattern="Foo"/>
我根本不能说正则表达。是否有人能够解决这个谜题并为我自己和其他人创建一个RegEx以在pattern="#"
属性中使用?
如果有帮助,有人已经大致回答了这个问题:Regular Expression to validate UK National Insurance Number。但是,经过测试,答案似乎都没有。
号码的格式是两个前缀字母,六个数字和一个后缀字母。
通常使用的示例是AB123456C
。
通常,数字会打印出空格以配对数字,例如:AB 12 34 56 C
。
D
,F
,I
,Q
,U
或V
。第二个字母也不能是O
。 BG
,GB
,NK
,KN
,TN
,NT
和ZZ
。 A
,B
,C
或D
。答案 0 :(得分:6)
这个应该符合您的需求:
^(?!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 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>
答案 1 :(得分:1)
使用NEST提供的最新列表,REGEX应该是(假设没有空格)
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}$");
答案 2 :(得分:0)
或试试这个:
^[a-zA-Z]{2}[0-9]{6}[A-Za-z]{1}$