代码之家  ›  专栏  ›  技术社区  ›  Mohsen

检查输入字符串是否是有效的数学表达式

  •  -1
  • Mohsen  · 技术社区  · 4 年前

    我要检查输入字符串是否是有效的数学表达式。我用过 eval , Number parseFloat

    • 我想 eval('1//2') 确定输入无效,但会导致 1 这对我来说是不正确的。
    • 我也期望 Number('2.5/6') 0.4166666666666667 ,但它会导致 NaN 这对我来说是不正确的。
    • 我也期望 parseFloat('1//2') 确定输入无效,但会导致 这对我来说是不正确的。
    0 回复  |  直到 4 年前
        1
  •  0
  •   Byron    4 年前

    我假设您只需要+、-、/和*运算符。下面是一个正则表达式模式,它将匹配由这些运算符分隔的数字序列:

    ^\d+(\.\d+)?([+-/*]\d+(\.\d+)?)*$
    

    基本上,它是从一个数字开始的,定义为至少一个数字,然后是尾数:

    \d+(\.\d+)?
    

    这之后会有0个或多个运算符与另一个数字一起出现。

    这将匹配简单的数字,以及任何一系列操作,例如1/2*3.2-5