JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式

简介: JavaScript随手笔记 --- 用正则表达式匹配字符串是否为运算公式



一、方法一:正则表达式

  要判断一个字符串为一个运算公式,不包含单独的数字或者负数,可以使用正则表达式来进行匹配。这里默认大家都是学过正则表达式了哈,其实本人也没学过,就临时看看写了。这里在线学习正则网站,可以练练,里面还有一些语法什么的。

  毕竟比较赶时间,写的仓促,所以很多地方还是可以优化的。有什么不对的话还请大家多多体谅,谢谢啦 😀 😀 😀 。

1.匹配数字和运算符

  regexFormula 用于匹配包含数字和运算符的字符串,例如 “1 + 2 * 3”,但不匹配单个数字和负数的情况。

var regexFormula = /^(\d+|\d+[.]?\d+)([+\-*/](\d+|\d+[.]?\d+))+$/;

  这里简单讲解一下该正则表达式各个部分的作用:

  • /^...$/
字符 描述
^ 表示从匹配输入字符串的开始位置,除非在方括号表达式中使用,
当该符号在方括号表达式中使用时,表示不接受该方括号表达式中的字符集合,
$ 匹配输入字符串的结尾位置;
  • (\d+|\d+[.]?\d+)
字符 描述
\d+ 表示匹配一个或多个数字
[.]? 表示匹配可选的小数点(.)
\d+[.]?\d+ 表示匹配小数
(A|B) 指明两项之间的一个选择
  • ([+\-*/](\d+|\d+[.]?\d+))+
字符 描述
[+\-*/] 表示匹配任意个运算符(+、-、*、/)
(a)+ 表示匹配多个a

2.匹配单个数字或者负数

  regexNumber 用于匹配包含单个数字或者负数的字符串,例如 “-3” 或 “42”,但不匹配包含多个数字和运算符的运算表达式。

var regexNumber = /^[-]?(\d+|\d+[.]?\d+)$/;
  • [-]?(\d+|\d+[.]?\d+)
字符 描述
[-]?(\d+|\d+[.]?\d+) 表示匹配单个数字或者负数

3.匹配多个数字

  ·regexIeger 用于匹配多个数字,这里好像第二步重复了,可忽略。

var regexIeger = /^\d+$/;

4.对数据进行判断是否能展示

  使用上面两个正则表达式可以排除输入字符串中包含单个数字或者负数的情况,而只匹配包含多个数字和运算符的运算表达式,从而判断输入字符串是否为有效的运算表达式。

/**
 * @author CSH
 * @function 函数功能:对数据进行判断是否能展示,匹配包含数字和运算符的字符串,不匹配单个数字和负数的情况
 * @param {string} displayNumber [需要判断的数据]
 */
function isShowCalcData (displayNumber){
  return regexFormula.test(str) && !regexNumber.test(str) && !regexIeger.test(str) && !isNaN(eval(str));
}

运行测试:

// 示例用法
console.log(isShowCalcData ("1 + 2 * 3")); // true
console.log(isShowCalcData ("hello world")); // false
console.log(isShowCalcData ("(1 + 2) / 3")); // true
console.log(isShowCalcData ("4 + (5 * 6)")); // true
console.log(isShowCalcData ("42")); // false
console.log(isShowCalcData ("-3")); // false
console.log(isShowCalcData ("0-3")); // true
console.log(isShowCalcData ("5.5+3.5")); // true
console.log(isShowCalcData ("+")); // false

总结

  感谢观看,如果有帮助到你,请给文章点个赞和收藏,让更多的人看到。🌹 🌹 🌹

  也欢迎你,关注我。👍 👍 👍

  原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!


相关文章
|
3天前
|
前端开发 JavaScript
前端 JS 经典:双等号运算符的运算和转换规则
前端 JS 经典:双等号运算符的运算和转换规则
8 0
|
3天前
|
前端开发 JavaScript 流计算
前端 js 经典:字符串超全方法总结
前端 js 经典:字符串超全方法总结
13 0
|
6天前
|
前端开发 JavaScript
前端 js 经典:正则表达式
前端 js 经典:正则表达式
12 2
|
6天前
|
JavaScript 前端开发 流计算
使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理
使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理
|
7天前
|
JSON JavaScript 前端开发
js将json字符串还原为json对象
【5月更文挑战第14天】js将json字符串还原为json对象
30 1
|
7天前
|
JavaScript 前端开发 数据处理
掌握JavaScript中的二进制运算,提升你的编程技能!
掌握JavaScript中的二进制运算,提升你的编程技能!
|
7天前
|
JavaScript 前端开发
JavaScript中科学计数法转化为数值字符串形式
JavaScript中科学计数法转化为数值字符串形式
|
7天前
|
JavaScript 前端开发 测试技术
学会JavaScript正则表达式(二)
学会JavaScript正则表达式(二)
|
7天前
|
机器学习/深度学习 JavaScript 前端开发
学会JavaScript正则表达式(一)
学会JavaScript正则表达式(一)
|
9天前
|
XML JavaScript 前端开发
【JavaScript | RegExp】正则表达式
【JavaScript | RegExp】正则表达式
14 4