我必须在我的if子句中写一些东西,但我不知道怎么写。例如,"hello..hello@gmail.com"或"hello.hello.hello@gmail.com"应该是无效的输入,但"hello.hello@gmail.com"应该是有效的。
read -p "enter email " email;
if [[ "$email" =~ ^[A-Za-z]+[A-Za-z0-9_%+-]+[A-Za-z]+@[A-Za-z]+[A-Za-$
echo "Email address $email is valid."//my if clause, which checks if there is correct gmail
else
echo "Email address $email is invalid."
fi
您可以使用此表达式:
^[A-Za-z][A-Za-z0-9_%+-]+(.[A-Za-z0-9_%+-]+)?@[A-Za-z]+(.[A-Za-z]+)+$
关键思想:
.
允许一个点(...)?
说带点的组是可选的,所以没有点也可以- 最大限度地减少解析同一字符串的不同方式的数量,以提高效率
- 我假设域可以有多个点,但您也可以使用'...@[A-Za-z]+。[A-Za-z]+$ 允许域中只有一个点。