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

如果大家对正则没有一点基础,可以查看这几篇文章:
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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值