這裏閱讀所有的答案我後已經確定這個問題沒有明確的答案。
用我的正則表達式,你將需要去除字符串中的所有空格,但實際上你應該這樣做來驗證大多數數據。這可以很容易地實現這裏有幾個例子。
PHP
preg_replace('/(\s+)|(-)/', '', $str)
的Javascript
str.replace(/ /g,'')
對於基於關閉英國政府建議(http://www.hmrc.gov.uk/manuals/nimmanual/nim39110.htm)驗證我構建了以下的正則表達式。
/^[A-CEGHJ-PR-TW-Z]{1}[A-CEGHJ-NPR-TW-Z]{1}[0-9]{6}[A-D]{1}$/i
下面是這個表達式
/ # Wraps regex
^ # Beginning of string
[A-CEGHJ-PR-TW-Z]{1} # Match first letter, cannot be D, F, I, Q, U or V
[A-CEGHJ-NPR-TW-Z]{1} # Match second letter, cannot be D, F, I, O, Q, U or V
[0-9]{6} # Six digits
[A-D]{1} # Match last letter can only be A, B, C or D
$ # End of string
/i # Ending wrapper and i denotes can be upper or lower case
這裏有一些測試圖案的說明,您可以使用
通
AA 11 22 33 A
BB 44 55 66 B
ZZ 67 89 00 C
失敗
AA 11 22 33 E
DA 11 22 33 A
FA 11 22 33 A
AO 11 22 33 A
因爲我需要延長的jQuery驗證添加這個新的國家保險號碼的正則表達式,我也包括這個,因爲它可能是有用的人。
jQuery.validator.addMethod('nino', function(nino, element) {
return this.optional(element) || nino.length >= 9 &&
nino.replace(/ /g,'').match(/^[A-CEGHJ-PR-TW-Z]{1}[A-CEGHJ-NPR-TW-Z]{1}[0-9]{6}[A-D]{1}$/i);
}, 'Please specify a valid national insurance number');
你在這裏給出了一個壞榜樣這已經引起了一些回答這個問題(包括接受的答案)的是錯誤的。您的示例NI編號以QQ開頭。字母Q在NI編號中的任何一個位置都是無效的。請參閱Andrew Bauer的答案,其中詳細介紹了所涉及的驗證規則。 – Barrie 2015-02-15 13:33:52