var formulaString=************
formulaString = formulaString.replace(/\s/g, '')
if (formulaString === '') {
this.$message.error('公式不能为空')
return false
}
if (/^[\x\÷\+\-\*\/]/.test(formulaString)) {
this.$message.error('公式不正确,不能以运算符开始')
return false
}
if (/[\x\÷\+\-\*\/]$/.test(formulaString)) {
this.$message.error('公式不正确,不能以运算符结束')
return false
}
if (/\(\)/.test(formulaString)) {
this.$message.error('公式不正确,存在空括号')
return false
}
if (/[\x\÷\+\-\*\/]{2,}/.test(formulaString)) {
this.$message.error('公式不正确,运算符不能连续')
return false
}
if (/\([\x\÷\+\-\*\/]/.test(formulaString)) {
this.$message.error('公式不正确,( 的后面不能是运算符')
return false
}
if (/[\x\÷\+\-\*\/]\)/.test(formulaString)) {
this.$message.error('公式不正确,) 的前面不能是运算符')
return false
}
if (/[^\+\-\*\/]\(/.test(formulaString)) {
this.$message.error('公式不正确,( 的前面只能是运算符')
return false
}
if (/\)[^\+\-\*\/]/.test(formulaString)) {
this.$message.error('公式不正确,) 的后面只能是运算符')
return false
}
var stack1 = []
for (var i = 0, item1; i < formulaString.length; i++) {
item1 = formulaString.charAt(i)
if (item1 === '(') {
stack1.push('(')
} else if (item1 === ')') {
if (stack1.length > 0) {
stack1.pop()
} else {
return false
}
}
}
if (stack1.length !== 0) {
this.$message.error('公式不正确,() 不匹配')
return false
}
// 另外还要判断数字的个数等于运算符号个数加1
this.aList = formulaString.match(/[\x\÷\+\-\*\/]/g) //运算符合的个数
const singleList = formulaString.split(/[\x\÷\+\-\*\/]/g)
const reg = /^[0-9]+.?[0-9]*$/
const writeNum = [] // 数字的个数
singleList.forEach(el => {
if (reg.test(el)) {
writeNum.push(el)
}
})
if (this.aList.length + 1 !== writeNum.length) {
this.$message.error('公式不正确')
return false
}