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

总结

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

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

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


相关文章
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
如何根据文件夹中文件,生成对应名字的图片,名称一样的路径,这里用到了变量,将集合定义在外面,字符串拼接,正则表达式截取.jpg文件
|
3天前
|
JavaScript 数据处理 索引
js字符串截取
js字符串截取
12 0
|
3天前
|
JavaScript
js中readAsDataURL的意思,可以用于浏览器预览图像文件或者转成base64字符串
js中readAsDataURL的意思,可以用于浏览器预览图像文件或者转成base64字符串
js中readAsDataURL的意思,可以用于浏览器预览图像文件或者转成base64字符串
|
5天前
|
JavaScript 前端开发 索引
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(三)
10 1
|
2天前
|
JavaScript 数据安全/隐私保护
js 常用正则表达式【实用】
js 常用正则表达式【实用】
5 0
|
2天前
|
JavaScript
JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
JS字符串数据类型转换,字符串如何转成变量,+号只要有一个是字符串,就会把另外一个转成字符串,- * / 都会把数据转成数字类型,数字型控制台是蓝色,字符型控制台是黑色,
|
3天前
|
JavaScript
js 简易对象转字符串后恢复为简易对象(如 ^a=$1^b=2转对象)
js 简易对象转字符串后恢复为简易对象(如 ^a=$1^b=2转对象)
7 0
|
4天前
|
存储 JavaScript 前端开发
|
4天前
|
存储 JavaScript 前端开发
|
5天前
|
JavaScript 前端开发 索引
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(一)
JavaScript编码之路 【JavaScript之操作数组、字符串方法汇总】(一)
7 0