zoukankan      html  css  js  c++  java
  • 前端验证数学公式是否符合要求

      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
      }
  • 相关阅读:
    软件下载链接获取方法
    【转】Linux 查看端口占用情况
    [转]SpringBoot第十集:国际化与Webjars的应用(2020最新最易懂)
    【转】Vue生命周期理解(带图的哦)
    Visual Studio 2019&WebStorm&CMD 创建vue项目
    Qt-Button使用QSS变图片按钮
    Qt-滚动条QSS样式
    Qt-鼠标点击别处隐藏widget
    OSG-修改osg鼠标中轮放大缩小的操作键
    OSG-在使用单位的kit编译osgQOpenGL时提示“语法错误:"unit"的前面应有“:””
  • 原文地址:https://www.cnblogs.com/mark21/p/14675885.html
Copyright © 2011-2022 走看看