在rules中添加校验规则:
complexConfig: [
{
validator: (rule, value, callback) => {
const pushS = ['(', '['];
const popS = [')', ']'];
let sum = 0
value.split("").find((item) => {
if (pushS.indexOf(item) !== -1) {
this.push();//入栈
if (this.top < 0) {
callback(new Error('配置不合法!'));
}
}
if (popS.indexOf(item) !== -1) {
this.pop();//出栈
if (this.top < 0) {
callback(new Error('配置不合法!'));
}
}
sum++;
})
if (sum == value.split("").length) {
if (this.top != 0) {//遍历结束栈中不为空,则括号匹配失败
callback(new Error('配置不合法!'));
}
}
//对计算式进行规则校验,先去除括号
var res = value.replace(/\(/g, "").replace(/\)/g, "");
var reg = /^(([a-zA-Z0-9]+[-+*/])*[a-zA-Z0-9]+([-+*/][a-zA-Z0-9]+)*)$/;
if (res !== '') {
if (!reg.test(res)) {
callback(new Error('配置不合法!'));
}
}
callback();
},
trigger: "blur"
}
],
在data中定义以下参数:
dataStore: [],
top: 0
在methods中添加如下方法:
push(element) { // 进栈
this.dataStore[this.top++] = element;
},
pop() { // 出栈
return this.dataStore[--this.top];
},