英国邮政编码正则表达式验证

时间:2015-08-07 10:30:48

标签: regex postal-code

我一直在寻找一个有效的英国邮政编码正则表达式模式,但似乎它们中的任何一个都是传统的或正常的正则表达式。

我使用此工具测试所有模式:https://regex101.com/

我在本文档https://www.gov.uk/government/uploads/system/uploads/attachment_data/file/413338/Bulk_Data_Transfer_-_additional_validation_valid_from_March_2015.pdf中找到的正则表达式无效。

我在这个wiki页面https://en.wikipedia.org/wiki/Talk:Postcodes_in_the_United_Kingdom中尝试了所有正则表达式,但没有。

我做错了吗?

我正在写一个Angular指令。

var regex = ????;

// add a parser that will process each time the value is 
// parsed into the model when the user updates it.
ngModel.$parsers.unshift(function(value) {
    // test and set the validity after update.
    var valid = regex.test(value);
    console.log(valid);
    ngModel.$setValidity('ukPostcode', valid);

    // if it's valid, return the value to the model, 
    // otherwise return undefined.
    return valid ? value : undefined;
});

谢谢。

1 个答案:

答案 0 :(得分:0)

当你的正则表达式得到纠正时,它与两者都匹配:

  

rg224ph
  rg141de

您的正则表达式目前有two errors

[A-PR-UWYZa-pr-uwyz0-9][A-HK-Ya-hk-y0-9][AEHMNPRTVXYaehmnprtvxy0-9]?[ABEHMNPRVWXYabehmnprvwxy0-9]?{1,2}[0-9][ABD-HJLN-UW-Zabd-hjln-uw-z]{2}|(GIRgir){3} 0(Aa){2})
                                                                                                 ^ {1,2} Preceding token is not quantifiable

[A-PR-UWYZa-pr-uwyz0-9][A-HK-Ya-hk-y0-9][AEHMNPRTVXYaehmnprtvxy0-9]?[ABEHMNPRVWXYabehmnprvwxy0-9]?{1,2}[0-9][ABD-HJLN-UW-Zabd-hjln-uw-z]{2}|(GIRgir){3} 0(Aa){2})
                                                                                                                                                                ^ ) Unbalanced parenthesis

我认为你想要的正则表达式是:

([A-PR-UWYZa-pr-uwyz0-9][A-HK-Ya-hk-y0-9][AEHMNPRTVXYaehmnprtvxy0-9]?[ABEHMNPRVWXYabehmnprvwxy0-9]{1,2}[0-9][ABD-HJLN-UW-Zabd-hjln-uw-z]{2}|(GIRgir){3} 0(Aa){2})

matches both inputs