Linux学习-shell利用正则表达式验证邮箱合法性
来源:互联网 发布:mac定妆喷雾怎么用 编辑:程序博客网 时间:2024/05/22 07:53
环境: 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脚本文件
将上面的代码写到脚本里面去,isEmail.sh
#!/bin/bash# this file use to check emailecho "please input you email:"read emailstr=`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
说明:上面代码通过读取用户输入的邮箱,判别输入的邮箱是否合法。最后输出两个不同的提示语。
4.测试
Reference
[1]linux命令行与shell脚本编程大全 第二版
- Linux学习-shell利用正则表达式验证邮箱合法性
- java利用正则表达式验证邮箱
- 利用正则表达式验证email地址的合法性
- 正则表达式验证邮箱
- 验证邮箱正则表达式
- 正则表达式验证邮箱
- 邮箱验证正则表达式
- 正则表达式验证邮箱
- 【正则】验证邮箱正则表达式
- 利用Java正则表达式验证手机号、邮箱等
- iOS利用正则表达式验证邮箱格式是否正确
- 利用正则表达式对电话号码、邮箱的验证
- 利用Java正则表达式验证手机号、邮箱等
- 不用正则和使用正则验证邮箱的合法性
- php正则表达式验证手机号码的合法性
- php正则表达式验证手机号码的合法性
- 正则表达式验证IP地址合法性
- 利用正则表达式检查时间的合法性
- Let the Balloon Rise
- 状态位
- tomcat
- Strut2中action方法匹配、通配符的使用放安抚
- 停止hadoop2.2.0时提示no namenode to stop
- Linux学习-shell利用正则表达式验证邮箱合法性
- 快速解密ABE方案理解
- 有关CSS3中的选择器(一)
- 菜鸟程序猿开发注意事项
- 219C - Color Stripe-模拟
- android中ImageView的内存问题
- zkw线段树
- iOS编译错误类型
- Android中一条最长短信所占的字节数