正则表达式

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

针对文本文件进行某个规则的校验,只能校验文本格式,不能对内容进行验证

意义:

  • 用于第三方系统的数据格式校验
  • 可以校验用户输入的文本格式
  • 数据库中匹配格式符合的数据

 

1、普通字符:没有特殊含义的标点符号、数字、字母、下划线

2、转义字符:换行\n、制表符\t、回车\r、以及有特殊符号的标点符号前面加上\

3、标准字符集合:匹配所有数字\d、(\D取反)

       匹配所有数字字母下划线\w、(\W取反)

       匹配空格字符回车换行制表符\s、(\S取反)

       匹配除了换行以外的所有字符.

4、自定义字符集: 用 [   ] 定义需要匹配的集合,除了匹配^需要加\外,其余的符号写在[ ]里面都是表示匹配符号本身,比如,

       [0-5a-f]  表示匹配0-5的数字和a-f的字符

       [^0-5a-f] 表示匹配除了0-5和a-f以外的内容

5、量词{  }:匹配元素内容的重复次数,比如

       {m}  表示[ ]里面的内容需要匹配m次

       {m,n}  表示[ ]里面的内容至少需要匹配m次,最多只能匹配n次

       {m,}  表示[ ]里面的内容最少要匹配m次,没有最多次数限制

       ?  表示匹配0次或者1次(等价于{0,1})

       +  表示匹配最少1次  (等价于{1,})

       *  表示匹配0次或者任意次  (等价于{0,})

注意:定义量词时我们一般常用贪婪模式,即匹配的字符越多越好;而非贪婪模式就是匹配最少次数,在量词后面加?即可实现。默认采用贪婪模式

6、字符边界(也称零宽)

      \b  匹配的是单词结尾

      \B  匹配的是除了结尾的全部

      ^   放在开头,表示匹配以某内容开始的字符串

      $  放在末尾,表示匹配以某内容结尾的字符串

7、选择符和分组

      |   表示或

      ( )   用括号起来的部分就是分了组

注:分组有捕获式分组和非捕获式分组,其中捕获式分组会缓存捕获的内容,用“\编号”的方式获得捕获内容,放在表达式之后;非捕获式分组不会缓存内容,用“?:”的方式选择非捕获式分组,放在表达式之前。一般推荐使用费捕获式分组,这样不会占用内存

8、预搜索

      (?=pattern) 正向肯定预查 断言自身出现的位置后面能跟哪些元素

例如,"Windows(?=95|98|NT|2000)"能匹配"Windows2000"中的"Windows",但不能匹配"Windows3.1"中的"Windows"。


      (?!pattern) 正向否定预查 断言自身出现的位置后不能跟哪些元素
例如:"Windows(?!95|98|NT|2000)"能匹配"Windows3.1"中的"Windows",但不能匹配"Windows2000"中的"Windows"。


      (?<=pattern) 反向肯定预查 与正向肯定预查类拟,只是方向相反。
例如,"(?<=95|98|NT|2000)Windows"能匹配"2000Windows"中的"Windows",但不能匹配"3.1Windows"中的"Windows"。

      (?<!pattern) 反向否定预查,与正向否定预查类拟,只是方向相反。
例如"(?<!95|98|NT|2000)Windows"能匹配"3.1Windows"中的"Windows",但不能匹配"2000Windows"中的"Windows"。

 

实例

匹配一个IP地址:

    (((?:[1-9]\d?)|(?:1[0-9]2)|(?:2[0-4][0-9])|(?:25[0-5]))[.]){3}((?:[1-9]\d?)|(?:1[0-9]2)|(?:2[0-4][0-9])|(?:25[0-5]))

匹配密码是否符合格式:(必须同时包含数字、大小写字母、标点符号

    (?=^.{6,8}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W+)(?!.*[^\d\Wa-zA-Z])

匹配年月日:

    (\d{2}|\d{4})-((0?[1-9])|(1[0-2]))-((0?[1-9])|([12][0-9])|(3[01]))

匹配时间:

    (((0?|1)[0-9])|(2[0-3])):([0-5][0-9]):([0-5][0-9])

匹配座机号码:   

    ^0\d{2}-[1-9]\d{7}|^0\d{3}-[1-9]\d{6}   

 

eclipse操作:

      private static void idcard() {
        System.out.println("请输入四川省的身份证:");
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();
        String regex = "^51\\d{4}\\d{4}(?:0\\d|1[0-2])(?:0[1-9]|1\\d|2\\d|3[0-1])\\d{3}[0-9xX]";
      //判断用户的输入 是否满足身份证规则
        Pattern pattern = Pattern.compile(regex);//定义正则表达式的模板
        Matcher matcher = pattern.matcher(str);//将用户的输入与模板进行对比

        if(matcher.matches()) {
        System.out.println("√");
        return;
        }else {
        System.out.println("身份证格式不正确,请重新输入:");
        idcard();  // 输入不正确重新输入
        }

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