2017-08-07 50 views
1

力图让无论是英国邮政编码(GF433ED)或欧洲邮政编码(12345)返回true或false,但下面的代码始终返回false:正则表达式jQuery的邮政编码为欧洲或英国

function valid_postcode(postcode) { 
    postcode = postcode.replace(/\s/g, ""); 
    alert(postcode); 
    var regex = /^[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}|^[0-9]{5}$/; 
    return regex.test(postcode); 
} 

任何帮助将不胜感激。

感谢

+0

请注意您的英国邮政编码正则表达式不完整。在这里看到英国政府提供的:([Gg] [Ii] [Rr] 0 [Aa] {2})|((([A-Za-z] [0-9] {1,2 })|(([A-ZA-Z] [A-HA-HJ-YJ-Y] [0-9] {1,2})|(([A-ZA-Z] [0-9] [ A-ZA-Z])|?([A-ZA-Z] [A-HA-HJ-YJ-Y] [0-9] [A-ZA-Z]))))\ S [O- 9] [A-Za-z] {2})'https://stackoverflow.com/questions/164979/uk-postcode-regex-comprehensive –

回答

1

使用\s*允许可选的空间。

/[A-z]{1,2}[0-9]{1,2}\s*[0-9][A-Z]{2}/i 
+0

正则表达式不正确,因为['[Az]'比字母匹配更多](https://stackoverflow.com/questions/29771901/why-is-this-regex-allowing-a-caret/29771926#29771926)。此外,锚可能是必需的,因为它似乎需要验证整个字符串的代码。 –

0

谢谢大家这一切都是两者兼而有之的(忘了张贴的答案)

见正则表达式的工作:

/^ [AZ] {1,2} [0-9] { 1,2} \ s * [0-9] [Az] {2} $ |^[0-9] {5} $/