使用Java中自带类的正则的表达式进行格式匹配
程序员文章站
2022-07-13 15:29:21
...
Java 中的自带Pattern 类可以进行信息的匹配。
常用的使用方式如下:
private final Pattern emailRegex = Pattern.compile("^[_a-z0-9-]+([.][_a-z0-9-]+)*@[a-z0-9-]+([.][a-z9-9-]+)*$");
private final Pattern passwordRegex = Pattern.compile("^\\w{8,16}$");
private final Pattern usernameRegex = Pattern.compile("^\\w{1,16}$");
// Pattern.complie 这个方法的作用:complie 中文意思是编译。这里的就是将给定的正则表达式编译为带有给定的标志的模式。
//完成编译给定的表达式后,需要进行输入匹配。
/*格式匹配 一般情况下,在开发的过程中,会对用户登录注册等功能能做一些细节操作。*/
private boolean validateEmail(String email){
return email!=null && emailRegex.matcher(email).find();
}
private boolean validateUsername(String username){
return username!=null && usernameRegex.matcher(username).find();
}
private boolean validatePassword(String password){
/*matcher:创建一个匹配容器,匹配给定的输入与此模式 */
return password!= null && passwordRegex.matcher(password).find();
}
或许可能会上述部分代码中稍带有些疑惑 find();和matcher()的解析
//查看源码后,给予以下的解释。
//* form,to 为搜索区域的范围。类型均为int。
//last first 为int 类型为最后的匹配范围。 取值 分别为 0,-1;
public boolean find() {
int nextSearchIndex = last;
if (nextSearchIndex == first)
nextSearchIndex++;
//如果搜索在下个区域开始之前,就在区域开始
if (nextSearchIndex < from)
nextSearchIndex = from;
// 如果下一次搜索开始于区域之外,则就会失败。
if (nextSearchIndex > to) {
for (int i = 0; i < groups.length; i++)
groups[i] = -1;
return false;
}
//这里返回的Mather 中search 方法。方法的类型是boolean
return search(nextSearchIndex);
}
//matcher() 方法;创建一个匹配器,匹配给定的输入与此模式。参数 input- 要匹配的字符序列
public Matcher matcher(CharSequence input) {
if (!compiled) {
synchronized(this) {
if (!compiled)
compile();
}
}
Matcher m = new Matcher(this, input);
return m;
//返回结果是新的
}
对于部分的解释可能还未到位,会在后续的学习过程中继续深入研究。