我从随机网站获得了下面的bash脚本进行电子邮件验证,它工作正常,但我需要知道它是如何工作的?
我非常感谢为此做出明确的解释。
特别是“[a-zA-Z0-9 ._%+ - ] + @ [a-zA-Z0-9 .-] +。[a-zA-Z] {2,4}”
#!/bin/sh
while true; do
read -p "Enter Email ID: " to_recipient
if [[ "$to_recipient" =~ [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4} ]]
then
break;
else
echo "Please enter a valid email address"
fi
done
再次感谢!
答案 0 :(得分:1)
简短版本是这是一个正则表达式匹配评估=~
。长话以来,你需要学习正则表达式的语法才能理解它。
以下是您提供的特定正则表达式的简短说明:
在正则表达式中,[
]
分隔'字符类'它们将匹配类中的任何字符。在字符类定义中,您可以使用-
指定字符范围。因此,在第一个:[a-zA-Z0-9._%+-]
,这是一类字符,可以是任何小写字母,任何大写字母,任意数字,或.
,%
,{{1 },或+
。然后,该类外部的-
是Kleene Plus,它表示前一个表达式中的一个或多个(在本例中为字符类)。然后下一位是+
符号,应该是自解释的。最后两个类应该匹配一个域名,他们在SLD部分使用字母数字和@
和.
,然后在TLD部分他们只允许2-4 alpha只有字符(-
语法表示前一个表达式的匹配数的下限和上限)。我在此注意到,这与现在完全有效的较长TLD不匹配:{N,M}
等。
要使用完整的电子邮件RFC实际匹配电子邮件地址,它实际上比您在此处更复杂。
了解更多信息: