2016-03-15 143 views
0

我已经建立了一个脚本来通过邮编查找洪水区域,我期待验证该字段,我目前有一个自定义的jQuery验证方法如下。jQuery验证英国邮政编码

jQuery.validator.addMethod("postcodeUK", function (value, element) { 
    return this.optional(element) || /[A-z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}/i.test(value); 
}, "Please specify a valid Postcode"); 

唯一的问题是我需要中间的空间,例如AB12 3CD或BC1 9GH。它允许AB123CD或BC19GH。

回答

2

您已经通过?关注了空间。如果你想要它,删除那?

一对夫妇的其他注意事项:

  • [A-z]不仅仅是A-Z和A-Z也[\]_,和反引号(Za之间的字符)。由于您使用的是i标志,因此您需要[A-Z][a-z]

  • 您可能想在开始时使用^,在末尾使用$以匹配整个输入,而不仅仅是一个子集。

Example on regex101.com(你不需要gm标志我曾经在那里,刚所以我可以告诉在测试区域内的多个实例)

+0

谢谢,这很完美! :) –

1

已经有一个证明用于验证jQuery Validate插件的the additional-methods.js file中包含的英国邮政编码的方法。包括this file或者直接将该方法复制到您的代码中,然后使用postcodeUK规则。

// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK) 
$.validator.addMethod("postcodeUK", function(value, element) { 
    return this.optional(element) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\s?(0AA))$/i.test(value); 
}, "Please specify a valid UK postcode");