首页 > 其他分享 >JS 验证自定义计算公式是否成功

JS 验证自定义计算公式是否成功

时间:2022-09-21 12:00:21浏览次数:69  
标签:自定义 验证 公式 JS verifyState str error 字符串 计算公式

1、需求

1.项目需求表单中填写公式传入后台。
2.公式中可以使用汉字英文。
3.验证公式是否成功。

2、思路

1.表单中输入公式存入后台是以字符串的形式传入。
2.循环字符串找出字符串中的汉字和英文并替换成数字1
3.替换成功后并进行计算,如果计算验证成功,代表公式验证成功,反之则验证失败。

3、举例

1.表单输入公式
  (特殊值1*数量1+特殊值2*数量2+text3*6)*0.7+特殊值3*数量3
2、替换后
  (1111*111+1112*112+11113*6)*0.7+1113*113

3、方法

    // 公式验证
    formulaVerify(str) {
      if (!str) {
        return this.$Message.error('公式不能为空')
      }
      str = str.replace(/ /g, '') // 去掉空格
      let verifyState = null // 验证状态
      const chinese = new RegExp('[\\u4E00-\\u9FFF]+', 'g') // 汉字
      const english = new RegExp('[A-Za-z]+') // 字母
      /* 
        1、forEach 不能遍历字符串
        2、for循环找出字符串中的汉字与字母
      */
      for (let i = 0; i < str.length; i++) {
        if (chinese.test(str[i]) || english.test(str[i])) {
          // 找出汉字与字母并替换成 数字 1
          str = str.replaceAll(str[i], 1)
        }
      }
      console.log(str)
      // 如果公式错误会出现报错信息
      try {
        // 构造函数
        // 执行字符串
        let makeFun = new Function('return ' + str)
        try {
          makeFun()
          verifyState = true
          console.log('语法正确', makeFun())
        } catch (error) {
          verifyState = false
          console.error('语法错误', error)
        }
      } catch (errorInfo) {
        verifyState = false
        console.error('语法错误', errorInfo)
      }
      return verifyState
    },

4、调用

  this.formulaVerify('(特殊值1*数量1+特殊值2*数量2+text3*6)*0.7+特殊值3*数量3')

5、正确公式返回值

6、错误公式返回值

标签:自定义,验证,公式,JS,verifyState,str,error,字符串,计算公式
From: https://www.cnblogs.com/psmart/p/16715051.html

相关文章

  • 30. Python json模块
    1.前言JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,遵循欧洲计算机协会制定的JavaScript规范(简称ECMAScript)。JSON易于人阅读和编写,同时也易于机器解......
  • Js中的File对象
    概述JavaScript中存在File对象,允许网页中的JavaScript访问其内容。File对象通常是用户在网页中的一个<input>元素上传文件返回的FileList对象,或者是拖放操作返回......
  • 如何保持 NextJS 项目的清晰和干净
    如何保持NextJS项目的清晰和干净已经使用NextJS实现了许多项目,我真的不得不说,我喜欢它。您构建Web应用程序的速度,尤其是与Tailwind结合使用的速度令人难以置信。......
  • JS/TS算法---回溯算法
    回溯算法(backtracking)、什么是回溯法回溯法也可以叫做回溯搜索法,它是一种搜索的方式。在二叉树系列中,我们已经不止一次,提到了回溯,例如二叉树:以为使用了递归,其实还隐藏......
  • FCKEditor增加自定义工具栏暨百度编辑器上传WORD文档并保留源格式自动填充到编辑框
    ​ ueditor粘贴不能粘贴word中的图片是一个很头疼的问题,在我们的业务场景中客户要求必须使用ueditor并且支持word的图片粘贴,因为这个需求头疼了半个月,因为前端方面因为安......
  • GSON搞定任何JSON数据
    一、Gson介绍GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。可以将一个Json字符转成一个Java对象,或者将一个Java转化为Json字符串。特点:快速......
  • 小程序自定义组件
    1.创建自定义组件一个组件也类似于一个页面,由json wxml wxss js 4个文件组成可以在一个新文件夹上右键新建component,可以直接生成这四个文件其次在json配置文件中......
  • 关于js闭包的基础理解
    闭包拿一个可以记录函数调用次数的来进行理解,如下方letn=0functionnumUp(){n++console.log(n)}constfn=numUp()fn()//n=1fn()......
  • 前端Nodejs-Day35
    创建web服务器:①导入http模块:require导入②创建web服务器实例:调用http.createServer()方法  ③为服务器绑定request事件:使用on方法绑定 ④启动服务器:.lis......
  • Node.js(七)MySql+ajax
    Api.jsconstexpress=require("express");constrouter=express.Router();constmysql=require('mysql')constmysqlutil=require("./mysql");letpool=mysql.cre......