我在以某种方式构造正则表达式时遇到问题,以便它可以与诸如>=, <=, <, >, =, !
这样的字符串中的常见数学运算符>=10<50!45
匹配,而且还可以识别匹配其中一个的字符。
这是我遇到问题的部分。 regex不仅可以根据我的集合查找匹配项,还可以记录其后的值,以便我可以使用此信息来构建查询。
上面的示例中生成的正则表达式和替换将类似于:{$gte: 10}, {$lt: 50}, {$ne: 45}
答案 0 :(得分:0)
(>=|>|<|<=|!|=)(\d+\.?\d+?)
<----此模式分别捕获运算符和数字。 As you can see here。它也适用于浮点数。
要从结果中构建查询,只需评估第一组以确定运算符,然后评估第二组的值。
答案 1 :(得分:0)
这是改进版,其中对=
进行了一些修复,并允许使用一位数字字符。
它还考虑了空间。
/(\>|\<|\!|[\!\<\>]?\=)(\s*?\d+\.?\d*?)/
https://regexfiddler.com/e/pir1uy2s9wwh/match-for-math-operators