这里写自定义目录标题
有帮助点赞关注评论三连哈!QAQ
表单限制rule文件
rule.ts
export default {
// 不能输入表情
noEmoji: {
pattern: /^[\u4e00-\u9fa5_a-zA-Z0-9]+$/,
},
// 手机号
phone: {
pattern: /^1(3\d|4[5-9]|5[0-35-9]|6[2567]|7[0-8]|8\d|9[0-35-9])\d{8}$/,
message: '请输入正确的手机号码',
trigger: 'blur',
},
password: {
pattern: /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z_]{8,20}$/,
message: '请输入8-20位数字/字母组合密码',
trigger: 'blur',
},
email: {
pattern: /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z\d]{2,5}$/,
message: '邮箱格式不正确',
trigger: 'blur',
},
number: {
pattern: /^\d+$/,
},
// 身份证号
idNumber: {
pattern: /^[1-9]\d{5}(18|19|20|(3\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
},
};
应用主文件
login.vue
a-form ref="form" class="login-form" name="custom-validation" :model="formState" :rules="rules">
<a-form-item name="userName">
<a-input
v-model:value="formState.userName"
class="button"
placeholder="请输入手机/邮箱"
autocomplete="off"
maxlength="50"
>
<template #prefix>
<UserOutlined />
</template>
</a-input>
</a-form-item>
<a-form-item name="password">
<a-input-password
v-model:value="formState.password"
class="button"
placeholder="请输入登录密码"
type="password"
autocomplete="off"
>
<template #prefix>
<LockOutlined />
</template>
</a-input-password>
</a-form-item>
script setup name="Login">
import Rules from '@/tools/rules';
import { message, Modal } from 'ant-design-vue';
import { mainStore } from '@/store/main';
const store = mainStore();
const formState = reactive({
userName: '',
password: '',
imageCode: '',
rememberMe: false,
code: '',
verifyAccount: '',
loginSelect: '0',
});
const placeholder = computed(() => {
return formState.loginSelect == 0 ? '请输入手机号' : '请输入邮箱号';
});
const rules = computed(() => {
return {
userName: [{ required: true, message: '请输入手机或者邮箱', trigger: 'blur' }],
password: [{ required: true, message: '请输入登录密码', trigger: 'blur' }],
verifyAccount: [
{ required: true, message: placeholder.value, trigger: 'blur' },
formState.loginSelect == 0 ? Rules.phone : Rules.email,
],
code: [{ required: true, message: '请输入验证码', trigger: 'blur' }],
};
});
function onChangeAccountType(t) {
formState.loginSelect = t.type;
formState.verifyAccount = '';
codeForm.value.clearValidate(['verifyAccount']);
}
</script>