正则的基本用法

本文深入探讨了正则表达式的多种使用方法,包括test()、search()、match()、exec()和replace()等,通过具体示例展示了如何在字符串中查找、替换和捕获模式,适用于前端开发、后端开发等领域的文本处理需求。

 

 

 

 

 

 

 

 

 

 

 

方法:

 

 

 

 

 

正则表达式的方法:

  1:test()方法:在字符串中查找符合正则的内容,若查找得到返回true,否则false;

    格式:正则.test(字符串);

    emailPattern.test("123_456@qq_mail.com")    //返回true

  2:search()方法:搜索符合正则的第一次出现的位置,若搜索到返回第一次出现的位置,否则返回-1。

    格式:字符串.search(正则);

    var str="abcd@mail.com";    str.search(/@/);  //返回4

  3:match()方法:获取正则匹配的结果,以数组的形式返回。

    格式:字符串.match(正则);

    "123ab45cd678".match(/\d+/g);    //返回 [123,45,678],若这里不是全局匹配则返回["123",index:0,"123ab45cd678"],就只会返回第一个

  4:exec()方法:捕获符合正则的字符串,若捕获到符合正则的字符串返回一个Array的实例,但它包含了两个额外的属性index和input。index表示符合正则字符串出现的位置;input表示字符串表达式的字符串。

    格式:正则.exec(字符串)

    var textArray=/.bc/.exec("abc12abc3abc45");      //textArray.index=0;textArray.input="abc12abc3abc45";textArray[0]=abc;

    var textArray=/.bc/g.exec("abc12bbc3cbc45");      //textArray.index=0;textArray[0]="abc";textArray[1]="bbc";textArray[2]="cbc";

  5:replace方法:用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

    格式:字符串.replace(正则|字符串,字符串|回调函数)

    5.1字符串.replace(字符串,字符串|回调函数)      //这里回调函数必须返回的是一个字符串

      "abcde12345abc".replace("abc","mmm");    //return:mmmde12345abc

    5.2字符串.replace(正则,字符串)

      "abcde12345abc".replace(/abc/g,"mmm");    //return:mmmde12345mmm

    5.3字符串.replace(正则,回调函数)

      每匹配到一个正则就会调用一次回调函数,每次回调都会传递以下参数:

        result:本次匹配到的结果

        $1-$9:正则中有多少个()就表示有多少个参数

        offset:记录本次匹配的开始位置

        source:接受匹配的原始字符串

      replace搭配JS正则的一些案例:

        5.3.1:去掉字符串两边的空格

        "   abc   ".replace(/(^\s+)|(\s+$)/g,function(){

          return "";

        })

        5.3.2:提取URL中的参数和参数值

          var obj={};

          var url="www.emilzs.com/action?name=emilzs&age=18"

          url.replace(/([^&=]+)=([^&=]*)/gi,function(rs,$1,$2){

            obj[$1]=$2;                  //注:当第一次匹配到正则时$1为name,$2为emilzs。当第二次匹配到正则时$1为age,$2为18

          })      

        5.3.4:在指定位置插入新字符串

          str.replace(/(.{3})/,function(rs,$1){

            return $1+"xyz";                  //注:其实这种方法的意思就是将str字符串前3个字符替换成前3个字符+"xyz"

          })

        5.3.5:将电话号码加密

          var str=number.slice(3,7);

          number.replace(new RegExp(str,g),"******");      15123456789  -->   151*****789

 

Java 中正则表达式可用于字符串的匹配、查找、替换和分割等操作。以下是一些基本用法示例: ### 验证字符串是否匹配正则表达式 可以使用 `String` 类的 `matches` 方法来验证一个字符串是否匹配某个正则表达式。例如验证邮箱格式: ```java public class MatchesDemo { public static void main(String[] args) { String email = "xxx123@baidu.com"; //待验证邮箱 String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+"; //邮箱的正则表达式 //使用regex匹配email是否符合格式要求 boolean match = email.matches(regex); //返回一个boolean值 if(match){ System.out.println("是正确的邮箱格式"); //true }else{ System.out.println("不是正确的邮箱格式"); //false } } } ``` 在上述代码中,定义了一个邮箱字符串 `email` 和对应的邮箱正则表达式 `regex`,通过 `matches` 方法判断 `email` 是否符合 `regex` 的格式要求,并根据结果输出相应信息 [^1]。 ### 查找匹配的子字符串 可以使用 `java.util.regex` 包中的 `Pattern` 和 `Matcher` 类来查找字符串中匹配正则表达式的子字符串。示例如下: ```java import java.util.regex.Matcher; import java.util.regex.Pattern; public class FindMatches { public static void main(String[] args) { String text = "Hello, my email is test@example.com and another is info@test.org"; String regex = "[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]+)+"; Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(text); while (matcher.find()) { System.out.println("找到匹配的邮箱: " + matcher.group()); } } } ``` 在这段代码中,首先使用 `Pattern.compile` 方法编译正则表达式,然后使用 `Matcher` 类的 `find` 方法在字符串中查找匹配的子字符串,并通过 `group` 方法获取匹配的内容。 ### 替换匹配的子字符串 使用 `String` 类的 `replaceAll` 方法可以替换字符串中所有匹配正则表达式的子字符串。示例如下: ```java public class ReplaceMatches { public static void main(String[] args) { String text = "Hello, 123 World!"; String regex = "\\d+"; String replacedText = text.replaceAll(regex, "###"); System.out.println("替换后的字符串: " + replacedText); } } ``` 此代码将字符串 `text` 中所有连续的数字(由 `\\d+` 匹配)替换为 `###`。 ### 分割字符串 使用 `String` 类的 `split` 方法可以根据正则表达式分割字符串。示例如下: ```java public class SplitString { public static void main(String[] args) { String text = "apple,banana;cherry grape"; String regex = "[,;\\s]+"; String[] parts = text.split(regex); for (String part : parts) { System.out.println(part); } } } ``` 上述代码根据逗号、分号和空格(由 `[,;\\s]+` 匹配)将字符串 `text` 分割成多个部分,并输出每个部分。 ### 占有模式 还有一种占有模式,在正则表达式后面加个 `+` 符号就是占有模式,这种模式不会回溯,匹配一旦错了就错了。如果想深入了解,需要了解正则表达式匹配机制 [^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值