jQuery 验证英国邮政编码

jQuery Validate UK Postcode

我已经构建了一个脚本来通过邮政编码查找洪水区域,我正在寻找验证字段,我目前有一个自定义 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");

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

您通过在 space 后面添加 ? 使其成为可选的。如果您需要它,请删除 ?.

一些其他注意事项:

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

  • 您可能希望 ^ 在开头,$ 在结尾匹配整个输入,而不仅仅是一个子集。

Example on regex101.com (你不需要我在那里使用的 gm 标志,那只是为了我可以在测试中展示多个示例面积)

已经有一个 proven 方法来验证 the additional-methods.js file of the jQuery Validate plugin. Include 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" );