侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

Linux学习-shell利用正则表达式验证邮箱合法性

2023-11-15 星期三 / 0 评论 / 0 点赞 / 43 阅读 / 3208 字

环境:CentOS 7.0 引文:在今天这个时代,Email已经成为一种重要的通信方式。给导师发邮件,学术研究之间的交流,etc。常常用到Email,然而Email的验证却有点小难度,下面给出一个在L

环境: CentOS 7.0

引文:在今天这个时代,Email已经成为一种重要的通信方式。给导师发邮件,学术研究之间的交流,etc。常常用到Email,然而Email的验证却有点小难度,下面给出一个在Linux下使用shell脚本编写的一个实例。

linux中将正则表达式和sed、gawk结合起来,功能非常强大。我说的是真的,没骗你的,好好学吧。

邮箱验证 
Email地址的基本格式为:

username@hostname

1.username部分模式匹配

username的值可以用字符数子字符以及以下特殊字符:

  • 点号
  • 单破折号
  • 加号
  • 下划线

在有效的Email用户名中,这些字符可以以任意的组合形式出现。

@符号前面的是hostname部分

^([a-zA-Z0-9_/-/./+]+)

‘^’:表示整个模式以它前面的字符开头 
‘+’:表示前面的字符至少出现一次 
‘[]’:表示中括号内的符号任意组合都行

2.hostname模式匹配

Email地址的hostname部分由一个域名和一个服务器名组成。服务器名和域名也要遵照严格的命名规则,只允许字母数字字符以及以下特殊字符:

  • 点号
  • 下划线

服务器名和域名都用点号分隔开,先指定服务器名,紧接着指定子域名,最后是后面不带点号的顶级域名。

hostname模式是@后面的部分

([a-zA-Z0-9_/-/.]+)/.([a-zA-Z]{2,5})$

‘$’:表示以它前面的字符结尾 
([a-zA-Z0-9_/-/.]+) 可以匹配的有 
server 
server.subdomain 
server.subdomain.subsomain

对于顶级域名,有一些特殊的规则。顶级域名只能是字母字符,必须不少于两个字符,并且长度不得超过5个字符。下面是顶级域名用的正则表达式模式:

/.([a-zA-Z]{2,5})$

拼到一起后,到一起整个模式如下:

^([a-zA-Z0-9_/-/./+]+)@([a-zA-Z0-9_/-/.]+)/.([a-zA-Z]{2,5})$

3.编写shell脚本文件

#!/bin/bash
# this file use to check email

echo "please input you email:"
read email

str=`echo $email | gawk '/^([a-zA-Z0-9_/-/./+]+)@([a-zA-Z0-9_/-/.]+)/.([a-zA-Z]{2,5})$/{print $0}'`
if [ ! -n "${str}" ]
then
        echo "validation is wrong."
else
        echo "Your eamil is: ${str}"
fi

将上面的代码写到脚本里面去,isEmail.sh

 

说明:上面代码通过读取用户输入的邮箱,判别输入的邮箱是否合法。最后输出两个不同的提示语。

4.测试

 

广告 广告

评论区