计算器中的正则表达式
Regular Expressions in Calculator
我正在处理一些使用正则表达式的代码。它是用于Javascript计算器的。所有场景都有效,除了:
-number X number
消极的一面是把所有东西都扔掉,我已经追踪到了这个函数。通常,它会返回您在计算器屏幕上看到的内容。但是,当引入负数时,它将返回null。我不太擅长regex,所以希望有人能理解这一点?我该如何考虑负面影响呢?
function(){
return expr.match(/^'d{1,}('.'d{1,})?[-+*/]'d{1,}('.'d{1,})?$/);
}
谢谢!
这是您的正则表达式:
/^'d{1,}('.'d{1,})?[-+*/]'d{1,}('.'d{1,})?$/
让我们把它拆开:
- ^字符串以…开头
- ''d{1,}//一个或多个数字
- (.''d{1,})?//然后是一个可能的分数(点,然后是更多的数字)
- [-+*/]//后面跟一个运算符
- ''d{1,}//后跟一个或多个数字
- (.''d{1,})?//然后是一个可能的分数(点,然后是更多的数字)
- $//字符串结束
所以,是的,你的正则表达式说:"字符串必须以数字开头"。没有减号。如果添加-?
,则可以选择(?
)允许使用减号(-
)。您需要在"String starts with"之后、第一个数字序列之前插入该部分。
似乎只需要允许正则表达式检测潜在的负号。在这种特殊情况下(可能不够全面),请使用-?
("hyphen,maybe")进行计算。生成的正则表达式将显示为:
^-?'d{1,}('.'d{1,})?[-+*/]'d{1,}('.'d{1,})?$
从NodeJS终端考虑以下内容:
> "3+2".match(/^'d{1,}('.'d{1,})?[-+*/]'d{1,}('.'d{1,})?$/);
[ '3+2',
undefined,
undefined,
index: 0,
input: '3+2' ]
> "-3+2".match(/^'d{1,}('.'d{1,})?[-+*/]'d{1,}('.'d{1,})?$/);
null
> "-3+2".match(/^-?'d{1,}('.'d{1,})?[-+*/]'d{1,}('.'d{1,})?$/);
[ '-3+2',
undefined,
undefined,
index: 0,
input: '-3+2' ]
第一次尝试是在提供的代码中使用简单的"3+2"计算,这样可以正确解析。第二次尝试将相同的regex应用于"-3+2"并返回null
(正如您所经历的)。最后,对我建议的正则表达式更改重复相同的计算,再次得到有效的输出。
相关文章:
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 键按正则表达式以查找具有负值的小数
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 将po-box javascript正则表达式转换为c#regex
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 使用正则表达式捕获“”并分割成阵列
- 计算器中的正则表达式
- 如何使用正则表达式计算器输入与javascript