非美国邮政编码的最小和最大字符长度是多少

What is the min and max character length for a non-US postal code

我正在尝试开发一个接受来自表单的 postal 代码的应用程序。该表格可在全球范围内访问。我知道美国邮政编码的标准字符长度是 5,但非美国 postal 代码的最小值和最大值是多少?我需要知道,因为我正在使用验证约束:

/**
     * The zip code used to retrieve a US based customer's state.
     */
    @Nullable
    @Size(min=5, max=5)
    private final String zip;

此问题已被标记为重复,因为 post:I need to store postal codes in a database. How big should the column be?。其中没有指定所有非美国 postal 代码的最小值。

我的美国邮政编码是 10 个字符(9 位数字,连字符分隔符,xxxxx-xxxx)

对于美国以外的国家,您似乎必须检查每个国家/地区才能确定。如果包括常规 space,英国有 9 个字符的邮政编码:aaxx xxaa.

这是一个复杂的问题,归根结底,它并不是一个编程问题。邮政编码 a lot of complexities. For this reason, they feature in chronicles of programmers' incorrect assumptions.

您可以使用 FedEx 的 this table 等指南,例如

PT - Portugal - NNNN or NNNN-nnn or NNNNnnn

但请记住,大多数来源(例如那个来源)都是不完整的。


我建议问:何必?如果您想接受来自世界各地的邮政编码,并且如果它们不在您允许的长度范围内则失败,那么您实际上并没有很好地保护自己。邮政编码最短的国家/地区的用户可以输入最长国家/地区的邮政编码长度。在严格使用数字邮政编码的国家/地区中的用户可能会输入带有字母字符的邮政编码。

成为 "sure" 的唯一方法(当然对于某些有意义的值)是使用某种形式的 address validation