如何在这个正则表达式中包含负小数?

131

如何在这个正则表达式中匹配负数?这个正则表达式可以很好地匹配正数,但我希望它也可以匹配负数,例如-10,-125.5等。

^[0-9]\d*(\.\d+)?$

谢谢


http://www.regexper.com/ - Dave Bish
我尝试在开头添加[-],但这并没有起作用。我还尝试了一些小的组合更改。 - user1786107
请尝试使用此代码:^-?\d+(.\d+)?$ - Civa
17个回答

1
这对我很有用,允许负数和正数
 \-*\d+

如果使用C#:
Regex.Match(someString, @"\-*\d+").Value;

1
^[+-]?\d{1,18}(\.\d{1,2})?$

接受正数或负数的十进制值。

0

只需添加一个0或1的标记:

^-?[0-9]\d*(.\d+)?$

安德烈比我先完成了,他也是正确的,不需要使用[0-9]标记。 - BanksySan

0

匹配数字的正则表达式,可选小数点,可选负号:

^-?(\d*\.)?\d+$;

适用于负整数、小数、带小数的负数


0

对于所有我能想到的情况,/\d/ 都能按预期工作:

let ns = {
  regex: {
    num: /\d/
  }
}

for (let i of [-2, -1, 0, 1, 2, 'one', 'negative one', Math.PI, Math.E, (42 * -1), (42 / -1), '-1', '0', '1', 1.01, -1.01, .1, -.1, Math.sqrt(42)]) {
  console.log(ns.regex.num.test(i) + ': ' + i);
}

如果你想要更多有关 Math 的乐趣,可以查看https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Math


0

只针对负数,这很完美。

^-\d*\.?\d+$

0
^(-?\d+\.)?-?\d+$

允许:

23425.23425
10.10
100
0
0.00
-100
-10.10
10.-10
-10.-10
-23425.23425
-23425.-23425
0.234

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接