我一直在寻找一个有效的英国邮政编码正则表达式模式,但似乎它们中的任何一个都是传统的或正常的正则表达式。
我使用此工具测试所有模式: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;
});
谢谢。
答案 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})