Skip to content

Instantly share code, notes, and snippets.

@mgamini
Last active March 27, 2023 17:42
Show Gist options
  • Save mgamini/4f3a8bc55bdcc96be2c6 to your computer and use it in GitHub Desktop.
Save mgamini/4f3a8bc55bdcc96be2c6 to your computer and use it in GitHub Desktop.

Revisions

  1. mgamini revised this gist Jan 27, 2020. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion Elixir Email Validation
    Original file line number Diff line number Diff line change
    @@ -2,7 +2,7 @@

    # ensure that the email looks valid
    def validate_email(email) when is_binary(email) do
    case Regex.run(~r/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/, email) do
    case Regex.run(~r/^[\w.!#$%&’*+\-\/=?\^`{|}~]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$/i, email) do
    nil ->
    {:error, "Invalid email"}
    [email] ->
  2. mgamini created this gist Aug 16, 2014.
    29 changes: 29 additions & 0 deletions Elixir Email Validation
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,29 @@
    defmodule EmailValidator do

    # ensure that the email looks valid
    def validate_email(email) when is_binary(email) do
    case Regex.run(~r/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/, email) do
    nil ->
    {:error, "Invalid email"}
    [email] ->
    try do
    Regex.run(~r/(\w+)@([\w.]+)/, email) |> validate_email
    rescue
    _ -> {:error, "Invalid email"}
    end
    end
    end

    # check the email against a list of accepted domains, then make check if it is unique
    def validate_email([email, username, host]) do
    case host in Config.accepted_domains do
    true ->
    case find_by_email(email) do
    nil -> :ok
    _account -> :account
    end
    _ ->
    {:error, "Not an accepted domain."}
    end
    end
    end