• 前端验证数学公式是否符合要求


      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
      }
  • 相关阅读:
    Cannot find module 'express'
    txt简单写入
    URLRewriter 伪静态配置Demo
    利用css的sticky特性实现固定首列其他列滚动
    金数据表单接口请求(php)
    Android应用app数据请求捕捉三步走
    go语言模块开发概念与cron定时事务模块的使用
    万维网的发明
    UEditor扩展又拍云图片存储功能实践
    Html5+移动端小应用分享(得见)
  • 原文地址:https://www.cnblogs.com/mark21/p/14675885.html
Copyright © 2020-2023  润新知