【发布时间】:2011-01-09 11:16:23
【问题描述】:
我正在尝试制作一个 Bash 脚本来检查电子邮件地址是否正确。
我有这个正则表达式:
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
来源:http://www.regular-expressions.info/email.html
这是我的 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="test@terra.es"
if [[ $i=~$regex ]] ; then
echo "OK"
else
echo "not OK"
fi
脚本失败并给我这个输出:
10:语法错误:反引号替换中的 EOF
有什么线索吗??
【问题讨论】:
-
您知道国际化域名icann.org/en/topics/idn 吗?你的正则表达式匹配 test@fõõ.bâr.com 吗?
-
如果你仔细阅读你引用的那篇文章,你会发现 a) 正则表达式只会帮助你整理出明显非法的地址,b) 你要么有误报和漏报,要么完全笨拙的正则表达式,并且 c) 最后,您必须实际向该地址发送一封电子邮件,以检查它是否不仅在语法上有效,而且实际上是否正确(没有正则表达式可以告诉您)。
标签: regex bash shell email-validation