基本算术正则表达式不匹配单独的正/负数

我使用以下RegEx基本上过滤掉任何文本,并接受数字运算符.

([-+]?[0-9]*\.?[0-9]+[\/\+\-\*])+([-+]?[0-9]*\.?[0-9]+)

所以它抓住了11,1-1,2 * 2,10 / 2等.因为我写的解决方案不只是评估行上的表达式,而是总计所有计算的行,我需要允许用户放置独立的正/负数,这将影响总数(500,-500,500(万能证明)).

Here is the test I’ve been running.我需要能够在测试用例中匹配500,-500和500,同时仍然排除任何文本. RegEx非常糟糕,所以非常感谢任何帮助!

最佳答案 你的正则表达式要求两个组至少出现一次.你可以通过改变to *来使第一组成为可选的,只需要匹配第二组,并使其缩短一点.

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

See demo at regex101

点赞