Skip to content

Instantly share code, notes, and snippets.

@adriancmiranda
Forked from guessi/email_validator_regex.sh
Created August 29, 2024 19:05
Show Gist options
  • Save adriancmiranda/aaffce74830a2217a49f42274323554a to your computer and use it in GitHub Desktop.
Save adriancmiranda/aaffce74830a2217a49f42274323554a to your computer and use it in GitHub Desktop.
Simple Email Validator in Bash
#!/usr/bin/env bash
valid_inputs=(
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"valid@e-x_ample.com"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
)
invalid_inputs=(
"[email protected]"
"[email protected]"
"[email protected]"
"inv [email protected]"
"invalid@exa mple.com"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"invalid@_"
"invalid@com"
"[email protected]"
"invalid@example._com"
"invalid@e-x._ample.com"
"[email protected]_ample.com"
"[email protected]_ample.com"
"[email protected]"
"invalid@example._"
"[email protected]"
"[email protected]"
"[email protected]"
"invalid@example."
"[email protected]."
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"[email protected]"
"invalid@com"
"@"
".@."
"-@-"
"_@_"
"+@+"
"a.@.."
"@com"
"@example.com"
"[email protected]"
"[email protected]"
"invalid@_123.com"
"[email protected]"
"[email protected]"
)
regex="^([A-Za-z]+((\.|\-|\_)?[A-Za-z0-9])*\+?((\.|\-|\_)?[A-Za-z]+[A-Za-z0-9]*)*)@(([A-Za-z0-9]+)+((\.|\-|\_)?([A-Za-z0-9]+)+)*)+\.([A-Za-z]{2,})+$"
function validator {
if [[ $1 =~ ${regex} ]]; then
printf "* %-48s \e[1;32m[pass]\e[m\n" "${1}"
else
printf "* %-48s \e[1;31m[fail]\e[m\n" "${1}"
fi
}
cat <<-EOF
a simple email validator in shell
online validator: http://emailregex.com/
RFC: http://emailregex.com/email-validation-summary/
EOF
echo
echo "### expected result: valid"
echo
for input in "${valid_inputs[@]}"; do
validator "${input}"
done
echo
echo "### expected result: invalid"
echo
for input in "${invalid_inputs[@]}"; do
validator "${input}"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment