Java 正则表达式的用法与实例

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 Java 正则表达式的用法与实例,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、简介

正则表达式,又称规则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)。描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

二、相关符号

1)单个符号

符号 用法与含义
^ 匹配输入字符串开始的位置
$ 匹配输入字符串结尾的位置
. 匹配单个任意字符,如Ja.a,可以匹配Java但不能匹配Javva
中括号[] 匹配单个字符,但只能匹配括号中指定的字符,如ja[vr]a,jara合法
| 符号 或,和中括号[]类似,匹配指定的字符,但可以不是单个,如r(a|b|c|dd)n
^符号 表示否,如[^0—9]即不匹配数字

2)次数符号

以下符号是匹配其前面的子表达式出现的次数:

符号 次数
* 0次或者多次
+ 1次或者多次
? 0次或者1次
{n} 刚好n次
{n,} 至少匹配n次
{n,m} n次到m次

举个栗子:

o{2}"Bob"中的"o"不匹配,但与"food"中的两个"o"匹配。
o{1,}等效于o+
o{0,}等效于o*
o{0,1}'等效于 o?

3)快捷字符

符号 含义
\d 匹配一个数字字符,等价于 [0-9]
\D 匹配一个非数字字符,等价于 [^0-9]
\w 匹配字母、数字、下划线,等价于[A-Za-z0-9_]
\W 等价于[^A-Za-z0-9_]
\s 空字符,只可以匹配一个空格、制表符、回车符、换页符,不可以匹配自己输入的多个空格
\S 匹配任何非空白字符

更多字符可以参考菜鸟教程

三、常用的正则表达式

整理一些常见的正则表达式如下:

  • 汉字:^[\u4e00-\u9fa5]{0,}$
  • 长度为3-20的所有字符:^.{3,20}$
  • Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$
  • 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
  • InternetURL:[a-zA-z]+://[^\s]* 或 ^https://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$
  • 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
  • IP地址:\d+.\d+.\d+.\d+
  • 中国邮政编码:[1-9]\d{5}(?!\d)
  • 腾讯QQ号:[1-9][0-9]{4,}

其余的表达式可以参考这里
在这里插入图片描述

四、正则表达式的常见操作

java中的正则表达式,建议多研究pattern类 和 matcher类

import java.util.regex.Matcher;
import java.util.regex.Pattern;

1)匹配

方法:

  • public boolean matches(String regex)

举例:

public static void checkQQ(){
        String qq = "123456789abc";

        String regex = "[1-9]\\d{4,14}";

        boolean flag = qq.matches(regex);
        if(flag)
            System.out.println(qq+"合规");
        else
            System.out.println(qq+"不合规");
         
}             
//不合规

2)切割

方法:

  • public String[] split(String regex)

举例:

  public static void splitTest()
        {
    
        String str = "摸 鱼 写 博 客";
        //按照多个空格来进行切割
        String reg = " +";
        String[] arr = str.split(reg);  
        System.out.println(arr.length);
        //用加强for循环遍历
        for(String s : arr)
        {
            System.out.println(s);
        }
    }        

3)替换

方法:

  • public String replaceAll(String regex,String replacement)
  • replaceFirst 替换首次匹配,replaceAll 替换所有匹配

举例:

public static void replaceAllTest()
    {
    
        String str = "java123456Regular6543210Expression";
        //注意String regex = "\\d";和\\d{5,}的区别
 		String regex = "\\d{5,}";
 		
        str = str.replaceAll(regex,"#");

        System.out.println(str);
    }
// java#Regular#Expression

4)获取

方法:

  • 将正则表达式封装成对象。
  • 让正则对象和要操作的字符串相关联。
  • 关联后,获取正则匹配引擎。
  • 通过引擎对符合规则的子串进行操作,比如取出。

举例:

public static void getTest()
    {
        String str = "mo yu xie bo ker";
  
        String regex = "\\b[a-z]{3}\\b";//匹配只有三个字母的单词

        //将规则封装成对象。
        Pattern p = Pattern.compile(regex);

        //让正则对象和要作用的字符串相关联。获取匹配器对象。
        Matcher m  = p.matcher(str);
        
        //将规则作用到字符串上,并进行符合规则的子串查找。
        boolean b = m.find();
        
        while(b)
        {
        	//获取匹配后结果。
            System.out.println(m.group());
            // start()  字符的开始下标(包含)
            //end()  字符的结束下标(不包含)
            System.out.println(m.start()+"...."+m.end());                
        }
    }        

五、邮箱格式验证实例

以常见的邮箱格式为例:

  • 由a~z的英文字母(不区分大小写)开头
  • 可由英文字母、0~9的数字、点、减号或下划线组成
  • @左侧长度为1~20个字符
  • 不能以点、减号结尾

代码实现:

public static boolean isValidEmail(String email) {
        if ((email != null) && (!email.isEmpty())) {
        	//定义邮箱格式的正则表达式
        	String regex = "^(\w+([-.][A-Za-z0-9]+)*){1,20}@\w+([-.][A-Za-z0-9]+)*\.\w+([-.][A-Za-z0-9]+)*$";
        	//返回格式验证结果
        	return Pattern.matches(regex, email);
        	}
        	
        return false;
    }
        	

六、正则表达式在线生成代码工具

懒人直接走这儿:正则表达式在线生成代码工具

在这里插入图片描述

写完刚好五点半,下班了伙计们!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146204.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!