达内课程-正则表达式

前端之家收集整理的这篇文章主要介绍了达内课程-正则表达式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Regex正则表达式

正确的字符串格式规则
一般用来判断用户的输入格式

正则表达式 匹配的字符串
k k
abc abc
[abc] […]表示字符集,是其中一个即可:a/b/c
[abc][123] a1/a2/a3/b1/b2/b3/c1/c2/c3
[a-z] a/b/c/d…z
[a-zA-Z0-9] a/A/z/Z/0/9.._
[^a-zA-Z] ^表示排除一个范围:排除英文字
[\u4e00-\u9fa5] 中文范围
\d 数字[0-9]
\D 排除数字[^0-9]
\w 单词字符[a-zA-Z_0-9]
\W 排除单词字符[^a-zA-Z_0-9]
\s 空白字符:回车/换行/制表符/……
\S 排除空白字符
. 任意字符
[abc]? ?表示0个或1个
[abc]?[123] 1/2/3/a1/a2…
[abc]* *表示0到多个
[abc]*[123] 1/2/3/a1/aaabccba1/…
[abc]+ +表示1到多个
[abc]+[123] a1/ab2/abcbcac1/…
[abc]{3} {}大括号表示固定数量:aaa/bca/cbc/…
[abc]{3,5} 3-5个:acc/abca/abcab/…
[abc]{3,} 3到多个:abc/abcccccaaaa/…
| 或,匹配左右其中一个表达式即可

相关方法

matches(正则表达式)

判断当前字符串,是否匹配正则表达式

栗子

public class Test {
    public static void main(String[] args) {  
        System.out.println("输入身份证号:");
        String s = new Scanner(System.in).nextLine();

        /* * 123456789012345 * 123456789012345678 * 12345678901234567x * 12345678901234567X * * \d{15}|\d{17}[\dxX] * 需要对“\”进行转义 * \\->\ * \\\\->\\ */
        String regex = "\\d{15}|\\d{17}[\\dxX]";

        if(s.matches(regex)){
            System.out.println("格式正确");
        }else{
            System.out.println("格式错误");
        }
    }  
}

栗子

public class Test {
    public static void main(String[] args) {  
        System.out.println("输入固定电话:");
        String s = new Scanner(System.in).nextLine();

        /* * 123456 * 1234567 * 12345678 * (010)12345678 * (0102)12345678 * 010-123456 * 0102-1234567 * * (\\d{3,4}-|\\(\\d{3,4}\\))?\\d{6,8} */
        String regex = "(\\d{3,8}";

        if(s.matches(regex)){
            System.out.println("格式正确");
        }else{
            System.out.println("格式错误");
        }
    }  
}

replaceAll(正则表达式,子串)

将找到的匹配子串,替换为新的子串

public class Test {
    public static void main(String[] args) {  
        System.out.println("言论自由:");
        String s = new Scanner(System.in).nextLine();

        String regex = "草泥马|尼玛|尼妹|傻逼";

        s = s.replaceAll(regex,"***");
        System.out.println(s);
    }  
}

运行结果

言论自由:
广电太尼玛傻逼了
广电太**

split(正则表达式)

用匹配的子串,拆分字符串

public class Test {
    public static void main(String[] args) {  
        System.out.println("输入关键词列表,用逗号、分号、空格分隔");
        String s = new Scanner(System.in).nextLine();

        String regex = "[,; ]+";

        String[] a = s.split(regex);
        for(int i=0;i<s.length();i++){
            System.out.println(a[i]);
        }
    }  
}

java.util.regex.Pattern 和java.util.regex.Matcher

Pattern 封装正则表达式
Matcher 封装正则表达式,和要匹配的字符串

创建实例

Pattern p = Pattern.compile(正则表达式);
Matcher m = p.matcher(要匹配的字符串);

Matcher方法

find()
向后查找下一段匹配的子串
返回boolean值表示是否找到

find(int from)
从指定位置向后查找

group()
提取刚刚找到的子串

start()
end()
刚刚找到的子串的起始位置和结束位置

栗子
匹配字符串中的3到多个数字

public class Test {
    public static void main(String[] args) {  
        System.out.println("输入:");
        String s = new Scanner(System.in).nextLine();

        //3到多个连续数字
        String regex = "\\d{3,}";

        Matcher m = Pattern.compile(regex)
                    .matcher(s);

        //一直向后查找,直到false
        while(m.find()){
            String s2 = m.group();
            int start = m.start();
            int end = m.end();
            System.out.println(start+"-"+end+":"+s2);
        }
    }  
}

猜你在找的正则表达式相关文章