# `EctoCommons.PostalCodeValidator`
[🔗](https://github.com/achedeuzot/ecto_commons/blob/v0.3.7/lib/validators/postal_code.ex#L1)

Validate the postal code within a country context.

This validator will only validate the postal code against known
regex formats for a given country, it won't match the postal
code to an actual database of all available postal codes in each country.

## Examples

    iex> types = %{postal_code: :string}
    iex> params = %{postal_code: "69001"}
    iex> Ecto.Changeset.cast({%{}, types}, params, Map.keys(types))
    ...> |> validate_postal_code(:postal_code, country: "fr")
    #Ecto.Changeset<action: nil, changes: %{postal_code: "69001"}, errors: [], data: %{}, valid?: true, ...>

    iex> types = %{postal_code: :string}
    iex> params = %{postal_code: "1120"}
    iex> Ecto.Changeset.cast({%{}, types}, params, Map.keys(types))
    ...> |> validate_postal_code(:postal_code, country: "be")
    #Ecto.Changeset<action: nil, changes: %{postal_code: "1120"}, errors: [], data: %{}, valid?: true, ...>

    iex> types = %{postal_code: :string}
    iex> params = %{postal_code: "00199"}
    iex> Ecto.Changeset.cast({%{}, types}, params, Map.keys(types))
    ...> |> validate_postal_code(:postal_code, country: "it")
    #Ecto.Changeset<action: nil, changes: %{postal_code: "00199"}, errors: [], data: %{}, valid?: true, ...>

    iex> types = %{postal_code: :string}
    iex> params = %{postal_code: "28010"}
    iex> Ecto.Changeset.cast({%{}, types}, params, Map.keys(types))
    ...> |> validate_postal_code(:postal_code, country: "es")
    #Ecto.Changeset<action: nil, changes: %{postal_code: "28010"}, errors: [], data: %{}, valid?: true, ...>

    iex> types = %{postal_code: :string}
    iex> params = %{postal_code: "1211"}
    iex> Ecto.Changeset.cast({%{}, types}, params, Map.keys(types))
    ...> |> validate_postal_code(:postal_code, country: "ch")
    #Ecto.Changeset<action: nil, changes: %{postal_code: "1211"}, errors: [], data: %{}, valid?: true, ...>

# `get_regexp`

# `validate_postal_code`

---

*Consult [api-reference.md](api-reference.md) for complete listing*
