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

总结

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

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

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


相关文章
|
17天前
|
JavaScript 前端开发
JS浮点数精度问题及高精度小数运算:BigNumber解决方案
JS浮点数精度问题及高精度小数运算:BigNumber解决方案
71 0
|
27天前
|
JavaScript 前端开发
JS几种拼接字符串的方法
JS几种拼接字符串的方法
46 1
|
29天前
|
JavaScript 前端开发 Java
如何使用这个正则表达式来验证一个字符串是否符合特定的格式要求?
如何使用这个正则表达式来验证一个字符串是否符合特定的格式要求?
|
17天前
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
33 0
|
18天前
|
Java API 索引
U4字符串以及正则表达式
【10月更文挑战第19天】在 Java 中,字符串是重要数据类型,支持多种操作如长度获取、字符访问、子串提取等。正则表达式提供强大的模式匹配和文本处理功能,通过 `Pattern` 和 `Matcher` 类实现。示例代码展示了如何使用正则表达式匹配单词字符。常用语法包括字符类、数量词、边界匹配和分组。
|
27天前
|
JavaScript 前端开发
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
69 1
|
1月前
|
存储 JavaScript 前端开发
JavaScript 字符串(String) 对象
JavaScript 字符串(String) 对象
39 3
|
2月前
|
JavaScript 前端开发
javascript创建字符串
javascript创建字符串
|
2月前
|
JavaScript 前端开发
如何在JavaScript中替换字符串:一篇详细指南
如何在JavaScript中替换字符串:一篇详细指南
|
2月前
|
JavaScript 前端开发 C++
JavaScript用indexOf()在字符串数组中查找子串时需要注意的一个地方
JavaScript用indexOf()在字符串数组中查找子串时需要注意的一个地方