Próbuję utworzyć skrypt Bash, aby sprawdzić, czy adres e-mail jest poprawny.Sprawdzanie poprawności adresu e-mail z wyrażeniem regularnym w Bash
Mam tego wyrażenia regularnego:
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
Źródło: http://www.regular-expressions.info/email.html
I to jest mój skrypt bash:
regex=[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
i="[email protected]"
if [[ $i=~$regex ]] ; then
echo "OK"
else
echo "not OK"
fi
Skrypt nie powiedzie się i dać mi ten wynik:
10: Syntax error: EOF in backquote substitution
Jakaś wskazówka ??
Czy jesteś świadomy umiędzynarodowionych domen http://www.icann.org/en/topics/idn/? czy twoje wyrażenie regularne pasuje [email protected]õõ.bâr.com? – Jean
Jeśli przeczytasz dokładnie ten artykuł, zobaczysz, że a) wyrazy regularne pomogą tylko uporządkować rażąco nielegalne adresy, b) będziesz mieć albo fałszywe alarmy i fałszywe negatywy, albo zupełnie nieporęczne wyrażenie, c) na końcu będziesz musiał wysłać wiadomość e-mail na ten adres, aby sprawdzić, czy jest ona nie tylko poprawna pod względem składni, ale w rzeczywistości poprawna (której regex nie może ci powiedzieć). –
sprawdź ten wpis: http://solidlystated.com/scripting/proper-email-address-validation/ –