「这是我参与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}$),我这里就是简单的验证身份证号的位数 。 对于那种结尾字母的特殊情况没有进行验证。
总结
- 我这里针对正则表达式就算是一个抛砖引玉
\