表单正则 基于 element UI 正则规则

本文介绍如何使用 Element UI 进行表单验证,包括关键词和 SKU 的自定义校验规则实现。涵盖中文及特殊字符过滤、数字及字母组合验证等场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则校验,第一次用,记录一下,记性不好

http://element-cn.eleme.io/#/zh-CN/component/form  参考文档  element uI form表单 校验

第一种,允许中文逗号,英文逗号,换行输入

var val = value

.split(/[\n|\r\n|\,|\,]/)

.map(el => el.trim())

.filter(el => el !== "");

第二种,不允许特殊符号

let regEn = /[`~!@#$%^&*()_+<>?:"{}.\/;'[\]]/gi;

let regCn = /[·!#¥(——):;“”‘、|《。》?、【】[\]]/gi;

第三种,允许大写字母和数字混合,或者纯数字,长度都是10位

reg = /^(?=.*?[A-Z])(?=.*?[0-9])[A-Z0-9]{10,10}$|^[0-9]{10,10}$/;

第四种,允许纯数字  12位

reg = /^[0-9]{12,12}$/;

第五种,允许纯数字  11位

reg = /^[0-9]{11,11}$/;

允许多种兼容,可以在正则里面自己添加,举个例子

var val = value

.split(/[\n|\r\n|\,|\,]/)        // |  或 关系

.map(el => el.trim())

.filter(el => el !== "");

 

reg = /^(?=.*?[A-Z])(?=.*?[0-9])[A-Z0-9]{10,10}$|^[0-9]{10,10}$/;  // |  或 关系

 

 

HTML:

<el-form :model="form" :rules="rules" ref="ruleForm" style="width:100%; padding-right:100px; ">

<el-form-item label="关键词: " prop="keywords" :label-width="formLabelWidth">

<el-input type="textarea" v-model="form.keywords" :rows="4" placeholder="多个关键字换行输入(1-500个)" />

</el-form-item>

<template>

<div class=" fontSizeBox1 fontSize1" v-model="fontSum1">已输入 {{fontSum1}} 个</div>

</template>

<el-form-item label="商品ASIN:" prop="skus" :label-width="formLabelWidth" style="margin-top:25px;">

<el-input type="textarea" v-model="form.skus" :rows="4" placeholder="多个关键字换行输入(1-500个)" />

</el-form-item>

<template>

<div class=" fontSizeBox2 fontSize2" v-model="fontSum2">已输入 {{fontSum2}} 个</div>

</template>

<el-form-item :label-width="formLabelWidth" style="margin-top:15px;">

<el-checkbox v-model="form.monitorFlag">是否添加监控</el-checkbox>

<el-date-picker :picker-options="pickerOptions1" :label-width="formLabelWidth" class="el-date-wrapper" style="width:100%" v-if='form.monitorFlag' v-model="form.monitorTimeAry" type="daterange" align="left" unlink-panels range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期">

</el-date-picker>

</el-form-item>

</el-form>

定义在data  return 里面的校验

 

rules: {

keywords: [

{ required: true, message: "请输入关键字", trigger: "blur" },

// { min: 1, max: 500, message: "最多只能输入500字符", trigger: "blur" }, //限定输入的个数

{ validator: validateKeyword, trigger: "change" }  //特别重要 ,自定义校验,就是这里定义的,可以自己加定义方法!!!!

],

skus: [

{ required: true, message: "请输入商品ASIN:", trigger: "blur" },

// { min: 1, max: 500, message: "最多只能输入500个字符", trigger: "blur" },

{ validator: validateSku, trigger: "change" }  //特别重要 ,自定义校验,就是这里定义的,可以自己加定义方法!!!!

]

},

自定义校验的规则,最重要!!!

 

// 自定义校验关键字

var validateKeyword = (rule, value, callback) => {

if (value == null || value == undefined) return;

var val = value

.split(/[\n|\r\n|\,|\,]/)

.map(el => el.trim())

.filter(el => el !== "");

if (!value) {

callback(new Error("输入不能为空"));

return;

}

this.keywordsArr = val;

let regEn = /[`~!@#$%^&*()_+<>?:"{}.\/;[\]]/gi;

let regCn = /[·!#¥(——):;“”‘、|《。》?、【】[\]]/gi;

let keyworldLength = null;

if (regEn.test(value) || regCn.test(value)) {

callback(new Error("不能包含特殊字符"));

} else if (val.length > 500) {

callback(new Error("输入数量不能超过500个"));

} else {

callback();

}

};

// 自定义校验SKU

var validateSku = (rule, value, callback) => {

if (!value) {

callback(new Error("输入不能为空"));

return;

}

if (value == null || value == undefined) return;

let val = value

.split(/[\n|\r\n|\,|\,]/)

.map(el => el.trim())

.filter(el => el !== "");

this.skusArr = val;

let regEn = /[`~!@#$%^&*()_+<>?:"{}.\/;'[\]]/gi;

let regCn = /[·!#¥(——):;“”‘、|《。》?、【】[\]]/gi;

let reg = /^(?=.*?[A-Z])(?=.*?[0-9])[A-Z0-9]{10,10}$|[0-9]{10,10}$/;

let changePlatformd = this.$store.state.selectPlatform.platformId;

let str = "ASIN须为10位数,只能包含纯数字或大写字母和数字组合";

if (changePlatformd == 2) {

reg = /^[0-9]{12,12}$/;

str = "请输入12位纯数字";

} else if (changePlatformd == 3) {

reg = /^[0-9]{11,11}$/;

str = "请输入11位纯数字";

}

if (!val.every(el => reg.test(el))) {

callback(new Error(str));

} else if (

val.some(el => regEn.test(el)) ||

val.some(el => regCn.test(el))

) {

callback(new Error("不能包含特殊字符"));

} else if (val.length > 500) {

callback(new Error("输入数量不能超过500个"));

} else {

callback();

}

};

提取重要的部分,放在头部,免得浪费大家的时间。。。。。~~~~~~·

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值