JavaScript正则表达式将可选的十进制数与可选的度量标识符相匹配

时间:2015-11-03 03:21:18

标签: javascript regex

我已经成功地使用了我的正则表达式:

/^(\+|\-|\/)*\d+?([kbmt]{1}|.\d{1,2})?$/gmi

匹配这些数字:

9
90
90.00
90.99
90k

+9
-90
+90.00
-90.99
+90k

+/-9
+/-90
+/-90.00
+/-90.99
+/-90k

但是我希望它也匹配这些:

90.00k
90.99k
-90.00k
+90.99k
+/-90.00k
+/-90.99k

如何清除需要匹配的剩余数字?

这是一个小提琴:https://regex101.com/r/jD9bH3/1

3 个答案:

答案 0 :(得分:2)

这符合您提供的每个示例:

/^(?:[+-]|\+\/\-)?\d+(?:\.\d+)?[kbmt]?$/gim

它不匹配+++2+-+-+-2+/--/+2等等。另外,我使用非捕获子组,其中组是必要的,因为我不相信你最关心的是自己回到零件中。

演示和解释细分:https://regex101.com/r/oP6cB4/2

答案 1 :(得分:1)

试试这个:

^(\+|\-|\/)*\d+(\.\d{1,2})?[kbmt]?$

此外,您可能希望在符号的开头更具体,因此您不匹配

之类的内容
+++2

答案 2 :(得分:0)

试试这个:\+?-?\/?9{0,2}0{0,1}\.?\k?

它会获取您示例中的所有字符串,但如果您有不同的数字,可能需要进行一些调整。

使用所有数字编辑&指标标识符:\+?-?\/?\d{0,2}\d{0,1}\.?[kmbt]?