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 }