有时会有需求去直接用stream方式去匹配18位身份证号, 下面介绍两种方式
filter()方法使用
先定义正则规则(可以自己替换规则):
String regex = "^([1-6][1-9]|50)\\d{4}(18|19|20)\\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\\d{3}[0-9Xx]$";
Pattern pattern=Pattern.compile(regex);
filter()方法:
List<User> userList = list.stream().filter(m -> pattern.matcher(m.getSfzh()).matches())
.collect(Collectors.toList());
map()方法使用
List<User> userList = list.stream().map(m -> {
System.out.println(pattern.matcher(m.getSfzh()).matches());
if (pattern.matcher(m.getSfzh()).matches()){
return m;
}
return null;
}).filter(Objects::nonNull).collect(Collectors.toList());
这篇博客介绍了如何利用Java Stream的filter()和map()方法匹配和筛选18位身份证号。通过定义正则表达式,对User对象列表进行流式处理,实现高效的身份信息验证。示例代码详细展示了两种不同的实现方式。
2172

被折叠的 条评论
为什么被折叠?



