带格式条件的负数的正则表达式十进制
Regex decimal for negative number with formatting conditions
亲爱的正则表达式之神 (http://xkcd.com/208/),
请提供匹配小数点后最多 4 位小数的模式(我在下面提供了可接受的示例),尽管有几个额外条件(列在底部)。
可接受:
0
0.1
0.12
0.123
0.1234
1
1.1
...
123456789.1234
(注:上面最后一个例子是为了说明大的数量没有限制)
也可以接受负数:
-0.1
-0.12
-0.123
-0.1234
-1
-1.1
...
-123456789.1234
(注:负数small的取数没有限制)
但是,以下数字不可接受,即:独立减号/加号、负零、带一个或多个前导零的数字、带前导的数字加号和不完整的小数,例如:
-
+
-0
0123456789.1234
007
+0.1
+123456789.1234
.1234
1.
谢谢:)
应该这样做
^(?:-|\+)?\d+?(?:\.\d{1,4})?$
您可以使用这样的正则表达式,但这会匹配您不想要的一些示例:
^-?\d+(?:.\d{1,4})?$
但是,如果您想要一个更复杂的正则表达式来丢弃您列出的所有模式,那么您可以使用这样的丢弃技术:
^-0$(*SKIP)(*FAIL)|^-?0\d+(?:\.\d+)?$(*SKIP)(*FAIL)|^-?\d+(?:.\d{1,4})?$
PCRE 引擎支持这种正则表达式。所以,如果你不使用 PCRE,你可以通过捕获组来实现相同的目标,因此捕获组捕获你想要的内容,例如:
^-0$|^-?0\d+(?:\.\d+)?$|^(-?\d+(?:.\d{1,4})?)$
这样做:^(-?0\.\d{1,4}|-?[1-9]\d*(\.\d{1,4})?|0)$
。在这里你可以玩:https://regex101.com/r/e7ch1G/3
^(-?((0|[1-9]+)\.\d{1,4}|[1-9])|0)$
亲爱的正则表达式之神 (http://xkcd.com/208/),
请提供匹配小数点后最多 4 位小数的模式(我在下面提供了可接受的示例),尽管有几个额外条件(列在底部)。
可接受:
0
0.1
0.12
0.123
0.1234
1
1.1
...
123456789.1234
(注:上面最后一个例子是为了说明大的数量没有限制)
也可以接受负数:
-0.1
-0.12
-0.123
-0.1234
-1
-1.1
...
-123456789.1234
(注:负数small的取数没有限制)
但是,以下数字不可接受,即:独立减号/加号、负零、带一个或多个前导零的数字、带前导的数字加号和不完整的小数,例如:
-
+
-0
0123456789.1234
007
+0.1
+123456789.1234
.1234
1.
谢谢:)
应该这样做
^(?:-|\+)?\d+?(?:\.\d{1,4})?$
您可以使用这样的正则表达式,但这会匹配您不想要的一些示例:
^-?\d+(?:.\d{1,4})?$
但是,如果您想要一个更复杂的正则表达式来丢弃您列出的所有模式,那么您可以使用这样的丢弃技术:
^-0$(*SKIP)(*FAIL)|^-?0\d+(?:\.\d+)?$(*SKIP)(*FAIL)|^-?\d+(?:.\d{1,4})?$
PCRE 引擎支持这种正则表达式。所以,如果你不使用 PCRE,你可以通过捕获组来实现相同的目标,因此捕获组捕获你想要的内容,例如:
^-0$|^-?0\d+(?:\.\d+)?$|^(-?\d+(?:.\d{1,4})?)$
这样做:^(-?0\.\d{1,4}|-?[1-9]\d*(\.\d{1,4})?|0)$
。在这里你可以玩:https://regex101.com/r/e7ch1G/3
^(-?((0|[1-9]+)\.\d{1,4}|[1-9])|0)$