1 参数校验
(1)用户名校验
规则:用户名必须是6-10位之间的字母
正则表达式
[A-Za-z]{6,10}
写个java代码验证下:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
// 6-10位之间的字母
String regex = "[A-Za-z]{6,10}";
isMatch(regex, "abcdefghijk");
isMatch(regex, "abcde");
isMatch(regex, "abcdefghij");
isMatch(regex, "abcdef");
isMatch(regex, "abcdefg");
isMatch(regex, "1bcdef");
}
private static void isMatch(String regex, String str) {
Pattern pa = Pattern.compile(regex);
Matcher matcher = pa.matcher(str);
boolean matches = matcher.matches();
System.out.println("字符是:" + str + ",是否匹配:" + matches + ",字符长度为" + str.length());
}
}
验证结果如下:

(2) 密码校验
规则:至少8个字符,至少1个大写字母,1个小写字母,1个数字和1个特殊字符
正则表达式如下
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}
写个java代码验证下:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
// 6-10位之间的字母
String regex = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[$@$!%*?&])[A-Za-z\\d$@$!%*?&]{8,}";
isMatch(regex, "aaaaaaa");
isMatch(regex, "aaaaaaaa");
isMatch(regex, "aAaaaaaa");
isMatch(regex, "aA@aaaaa");
isMatch(regex, "aA@1aaaa");
}
private static void isMatch(String regex, String str) {
Pattern pa = Pattern.compile(regex);
Matcher matcher = pa.matcher(str);
boolean matches = matcher.matches();
System.out.println("字符是:" + str + ",是否匹配:" + matches + ",字符长度为" + str.length());
}
}
验证结果如下:

(3) 编写前端校验代码
查看elementui官网,校验input框

查看官网源代码:

发现官网的数据校验,都是比较简单的校验,那如何自定义校验呢,再来查看官网


接下来改我们的登录页面代码:


此时,登陆页面完整代码为
<template>
<div id="login">
<h2>小高后台管理系统-登录</h2>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="用户名" prop="username">
<el-col :span="18">
<el-input v-model="form.username"></el-input>
</el-col>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-col :span="18">
<el-input v-model="form.password" type="password"></el-input>
</el-col>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit('form')">登录</el-button>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
data() {
const validateUsername = (rule, value, callback) => {
const pattern = /[A-Za-z]{6,10}/;
if (value !== "") {
if (!pattern.test(value)) {
callback(new Error("请输入正确的用户名"));
} else {
callback();
}
} else {
callback(new Error("请输入用户名"));
}
};
const validatePassword = (rule, value, callback) => {
const pattern =
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[$@$!%*?&])[A-Za-z\d$@$!%*?&]{8,}/;
if (value !== "") {
if (!pattern.test(value)) {
callback(new Error("请输入正确的密码"));
} else {
callback();
}
} else {
callback(new Error("请输入密码"));
}
};
return {
form: {
username: "",
password: "",
},
rules: {
username: [
{ required: true, validator: validateUsername, trigger: "blur" },
],
password: [
{ required: true, validator: validatePassword, trigger: "blur" },
],
},
};
},
methods: {
onSubmit(form) {
this.$refs[form].validate((valid) => {
if (valid) {
console.log("submit!", this.form.username, this.form.password);
} else {
console.log("error submit!!");
return false;
}
});
},
},
};
</script>
<style scoped>
#login {
position: absolute;
width: 400px;
height: 260px;
top: 50%;
left: 50%;
margin-top: -130px;
margin-left: -200px;
border: 1px solid lightgrey;
}
h2 {
text-align: center;
}
</style>
页面效果为

2 引入Message消息提示
登录成功或者规则校验失败,给个消息提示吧,console不需要打日志了
查看elementui官网

查看源代码,如下:

在我们登录页面,也引入,如下:

效果如下


但是错误一般input框下提示,message就不用提示了所以我们可以再规则校验失败的时候,不再提示message

再看下页面效果,完美

接下来,就发送axios请求,请求后台接口,登录接口联调了
