Java正则表达式初篇

194 阅读2分钟

「这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战」。

前言

  • 我们平时肯定回进行内容匹配。这是很生硬的一种匹配,大多数情况我们希望按照某种规则进行匹配。
  • 比如mybatis中模糊匹配就是典型的一种匹配方式,除了这种方式以外我们还需要更加高级的匹配

正则

  • 随之而来的正则就是满足我们更加复杂的规则产生的。正则的实现是依赖于回溯算法的,关于算法我们就不深入了。今天我们来看看用正则都可以实现那些吧

验证域名

  • 有的时候我们需要验证url地址,比如说我们需要实现一个功能根据用户输入的地址进行搬迁信息,但是用户可能不是很了解域名地址,可能会输错,或者就有部分人恶意攻击,所以这里我们验证url地址中域名是非常有必要的

  • (http|https)://((\w+.)?((\w+(\.)?)+)) 这个就是我们根据现阶段的域名抽象出来的url地址。我们简单解读下

    • | 标识或者的意思,在(http|https)这部分中标识必须已http或者https开头的。这就是依据我们现阶段url统计出来的, 除了这两种方式开头的应该都不是有效url
    • \w+标识匹配字母、数字、下划线。等价于 [A-Za-z0-9_] ;
String currentUrl = "https://www.zxhtom.io/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.html";
String group = "";
Pattern pattern = Pattern.compile(RegexUtil.URL_REGEX);
Matcher matcher = pattern.matcher(currentUrl);
if (matcher.find()) {
    for (int i = 0; i < matcher.groupCount(); i++) {
        System.out.println(matcher.group(i));
    }
}
  • 如上我们针对上面的url地址不仅仅对域名进行验证,还对域名部分进行匹配获取。

验证汉字

  • 在国内汉字使我们必备语言。验证汉字就必不可少。
  • [\u4e00-\u9fa5]关于这个正则没有解释的必要,我们只需要记住这是监测汉字的语法就行了。

验证身份证

  • 每个人都有一个身份证id , 这个id是不重复的,现在网络上经常会出现验证身份。
  • (^\d{18}$)|(^\d{15}$),我这里就是简单的验证身份证号的位数 。 对于那种结尾字母的特殊情况没有进行验证。

总结

  • 我这里针对正则表达式就算是一个抛砖引玉

\