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
      }
  • 相关阅读:
    postman接口测试01_下载安装
    Jenkins持续集成_05_参数化构建
    IntelliJ 中设置与Eclipse中 Ctrl+1 功能类似的快捷键
    JAVA 内部类
    Adobe Air 现在可支持X86的移动设备
    开发一些自动编写代码的工具可以增加效率吗?
    制作 Flex 悬停提示帮助文档(转)
    没什么好说的
    JDK,Tomcat,Maven,Mysql环境变量配置
    神器三、Android端神器东皇钟:天界之门
  • 原文地址:https://www.cnblogs.com/mark21/p/14675885.html
Copyright © 2011-2022 走看看