正则表达式语法与使用

正则表达式(Regular Expressiqn)

正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
则表达式通常被用来检索、替换那些符合某个模式的文本

java.util.regex包中提供以下两个类对正则表达式的支持:
Matcher类
通过解释Pattern对character sequence执行匹配操作的引擎。
Pattern类
正则表达式的编译表示形式。

public final class Pattern extends Objectimplements Serializable
正则表达式的编译表示形式。指定为字符串的正则表达式必须首先被编译为此类的实例。
典型的调用顺序是

Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaab");
boolean b = m.matches();

public final class Matcher extends Object implements MatchResult
Matcher类的主要功能是用于进行正则的匹配,通过Pattern类中定义完的正则,再使用
Matcher类进行验证或者替换。

常用方法:
boolean matches()
尝试将整个区域与模式匹配。

String replaceAll(String replacement)
替换模式与给定替换字符串相匹配的输入序列的每个子序列。

String replaceFirst(String replacement)
替换模式与给定替换字符串匹配的输入序列的第一个子序列

在JDK1.4之后加入了正则,随后又更新了String的操作类,因为在使用正则中,所有的内容通过字符串表示的比较多。在String类中有以下的方法可以完成对正则的支持:
boolean matches(String regex)
告知此字符串是否匹配给定的正则表达式。

String replaceAll(String regex, String replacement)
使用给定的replacement替换此字符串
所有匹配给定的正则表达式的子字符串。

String replaceFirst(String regex, String replacement)
使用给定的replacement替换此字符串
匹配给定的正则表达式的第一个子字符串。

String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。

常用的正则字符:

预定义字符类
.:任何字符(与行结束符可能匹配也可能不匹配)
\d:数字:[0-9]
\D:非数字: [^0-9]
\s:空白字符:[\t\n\x0B\f\r]
\S:非空白字符:[^\s]
\w:单词字符:[a-zA-Z_0-9]
\W:非单词字符:[^\w]

字符类
[abc]:a、b 或 c(简单类)
[^abc]:任何字符,除了 a、b 或 c(否定)
[a-zA-Z]:a到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]]:a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]]:d、e 或 f(交集)
[a-z&&[^bc]]:a 到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]]:a 到 z,而非 m 到 p:[a-lq-z](减去)

边界匹配器
^:行的开头
$:行的结尾
\b:单词边界
\B:非单词边界
\A:输入的开头
\G:上一个匹配的结尾
\: 输入的结尾,仅用于最后的结束符(如果有的话)
\z:输入的结尾

代码示例:
1、验证电话号码(如: 010-38389438 )
2、验证手机号码
3、验证用户名,只能是字母开头的数字、字母或下划线的组合
4、验证IP地址(如: 192.168.1.1)
5、验证年龄(100以内)
6、验证金额(可以有小数位)

package com.booy;

public class RegexDemo {
    public static void main(String[] args) {
        //验证电话号码
        String phoneNumber = "662-6589905";
        boolean p = phoneNumber.matches("\\d{3,4}-\\d{7,8}");
        System.out.println(p);
        //验证手机号码
        String phone = "17602800280";
        boolean p1 = phone.matches("1[3-9]\\d{9}");
        System.out.println(p1);
        //验证用户名,只能是字母开头的数字、字母或下划线的组合,最少6位,最多15位
        String user = "e88_ddf";
        boolean p2 = user.matches("[a-zA-Z]\\w{5,14}");
        System.out.println(p2);
        //验证IP地址(如: 192.168.1.1)
        String ip = "192.168.1.1";
        boolean p3 = ip.matches("\\d{1,3}.\\d{1,3}.\\d{1,3}.\\d{1,3}");
        System.out.println(p3);
        //验证年龄
        String age = "35";
        boolean p4 = age.matches("\\d{1,3}");
        System.out.println(p4);
        //验证金额(可以有小数位)
        String m = "35.88";
        boolean p5 = m.matches("\\d+.\\d+");
        System.out.println(p5);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值