常用正则表达式案例(不定期更新)
来源:互联网 发布:万物生长齐溪好丑 知乎 编辑:程序博客网 时间:2024/05/02 00:04
如果大家对正则没有一点基础,可以查看这几篇文章:
Java中正则表达式的基本使用
正则表达式中的基本正则规则详解01
正则表达式中的基本正则规则详解02
进入正题:
邮箱验证
- 电子邮箱由: “用户名@主机域名”组成。
- 用户名的开头不能由点号组成,不是第一位的位置就可以添加点号,但是点号不能够串联>=两个。
- 用户名的合法用户名由大小写英文字母(不区分大小写)、数字、下划线(可以串联任意个,也可以写在用户名开头)、横线(“-“,”-“可以串联任意个,但是不能够写在用户名开头)、点号(不能串联超过>=2个,不能写在用户名开头)组成。
- 主机域名由大小写英文字母、数字、横线(“-“,不可以串联>=2个,不能写在域名开头和结尾)、点号组成。域名不能有下划线,大家可以去注册域名看看,域名是不能有下划线的哦。
- 并且用户名和主机域名是不区分大小写的。在处理发送的时候都是会用小写。
- 大家如果不相信可以到mail.qq.com试试,到写信界面的收信人的输入框上面试试。
- 读者大可放心的发送信件,只是腾讯服务器会给你回信说,发不出去。并且会返回给你,收信人的小写地址。
这是腾讯qq邮箱的正则表达验证(从js中提取的):^(\w)+(\.\w+)*@(\w)+((\.\w+)+)$
个人感觉qq邮箱的验证有些地方有点影响效率。
这样写应该好一点:^(?:\w+)(?:\.\w+)*@(?:\w+)(?:(?:\.\w+)+)$ 就是让qq邮箱原本的匹配不会保存已经匹配成功的字符串。
但是,貌似这条js只是客户端的js,不是服务端的。所以客户端的匹配不严谨。而且,当主机域名的开始位置有横线时,腾讯那边也能够匹配成功!所以腾讯那边还是匹配得有错的。但是邮箱的要求还是按照上面的几条规则组成,读者可以根据腾讯qq给出的邮箱正则修改。
下面给出我自己写的邮箱正则规则:(大家看到正则很长不必害怕,其实仔细一看还是能够懂得。要结合上面邮箱的组成规则一起看。想当初作者我也是看到一条正则邮箱验证看不懂才去学习正则的。本篇开始也给出了学习正则的相关博客,从0到能够看懂下面的正则表达式)
^(?:\\w+)[(?:\\.[-\\w]+)(?:[-\\w]+)]*@(?:[a-zA-Z0-9]+)(?:-[a-zA-Z0-9]+)*(?:\\.[a-zA-Z0-9]+)+$
//也可以进行适当的简化,下面是简化后^(?i)(?:\\w+)[(?:\\.[-\\w]+)(?:[-\\w]+)]*@(?:[a-z0-9]+)(?:-[a-z0-9]+)*(?:\\.[a-z0-9]+)+$
下面给出邮箱测试程序:
import java.util.Scanner;public class pa36{ public static void main(String args[]){ Scanner scanner=new Scanner(System.in); //^(?:\\w+)(?:\\.\\w+)*@(?:\\w+)(?:(?:\\.\\w+)+)$//腾讯加强后的简化正则 //^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w+)+)$//腾讯qq邮箱验证正则(我从js源码中提取的) //自己写的正则:^(?:\\w+)[(?:\\.[-\\w]+)(?:[-\\w]+)]*@(?:[a-zA-Z0-9]+)(?:-[a-zA-Z0-9]+)*(?:\\.[a-zA-Z0-9]+)+$ String regex="^(?i)(?:\\w+)[(?:\\.[-\\w]+)(?:[-\\w]+)]*@(?:[a-z0-9]+)(?:-[a-z0-9]+)*(?:\\.[a-z0-9]+)+$"; System.out.println("请输入邮箱地址..."); boolean flag=false; while(scanner.hasNext()){ if(flag) System.out.println("请输入邮箱地址..."); flag=true; String sta=scanner.next(); if(sta.matches(regex)){ System.out.println(sta+" 是一个合法邮箱!!"); }else{ System.out.println(sta+" 不是一个合法邮箱!!"); } } }}
1 0
- 常用正则表达式案例(不定期更新)
- 常用正则表达式,不定期更新
- 正则表达式集合(不定期更新)
- sed 实践案例 (不定期更新)
- 常用得正则表达式案例
- 正则表达式常用的案例
- 正则表达式的常用案例
- 【正则表达式】--常用汇总(陆续更新)
- 常用正则表达式(持续更新)
- 常用正则表达式(持续更新...)
- PHP常用函数集合(不定期更新)
- PHP常用代码整理(不定期更新)
- Markdown常用语法(不定期更新)
- php 正则表达式用法和常用案例
- java正则表达式的常用案例
- JavaScript 正则表达式匹配验证常用案例
- 关于正则表达式 PHP正则表达式匹配嵌套HTML标签的方法和技巧 不定期更新关于正则内容
- 【不定期更新】常用下载资源整合
- Atom 常用插件
- Trivial_1_abstract class and interface
- 栈和队列的区别
- Java实现二叉树的前序、中序、后序遍历(非递归方法)
- opencv CvMat、Mat、IplImage之间的互相转换
- 常用正则表达式案例(不定期更新)
- java 常见几种发送http请求案例
- 资源宝库
- C++/C 千万别对结构体内部含有类使用memset赋值!!
- OPENCV 图像类型及相互转换
- [转载] #CheckBox expand its click area ##CheckBox扩大点击区域
- Qt使用九宫格原理缩放图片
- 简单管理Android手机程序的小程序
- Hibernate_初探之表单映射001