常用正则表达式案例(不定期更新)

来源:互联网 发布:万物生长齐溪好丑 知乎 编辑:程序博客网 时间: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
原创粉丝点击