0

我只想要一个字段来允许所有类型的数字:整数、小数、负数......以及所述类型的所有组合。不需要逗号。

这是我在大约 3 天的战斗中得到的最接近的结果:

/^[\.\-\d]*?$[1-9][\.\-\d]*?$/

这不允许整数!我不明白出了什么问题,有人可以解释一下如何做到这一点吗?

4

4 回答 4

6

以下应该有效:

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

解释:

^       # start of string anchor
-?      # match a '-', optional
\d*     # match zero or more digits
\.?     # match a '.', optional
\d+     # match one or more digits
$       # end of string anchor
于 2013-04-23T18:02:00.893 回答
1

这对我有用

string="some text with the number -123456.789 in it";
alert(string.replace(/[^-\d+.]/g,''));
于 2013-04-23T18:06:55.093 回答
1

尝试这个:

/^[-+]?\d*\.?\d*$/

请注意,这将匹配“6.”、“+5.3”、“4”,但不匹配“4.4.0”

这类似于 FJ 答案,但允许正符号输入并允许数字以点“.”结尾。

于 2013-04-23T18:08:41.627 回答
0

这是十进制数的正则表达式:

/^-?(?:\d{1,3}(?:,\d{3})*|\d+)(?:\.\d+)?$/

分解它:

  • 从字符串的开头...
  • 可选择匹配减号
  • 任何一个:
    • 最多匹配三位数字
    • (可选)匹配任意数量的(逗号后跟三位数字)[千位分隔符]
  • 或者:
    • 匹配任意数量的数字[没有千位分隔符]
  • 可选择匹配小数点后跟任意位数。
  • 检查您是否已到达字符串的末尾。
于 2013-04-23T18:04:24.843 回答