-3

如何修改这个正则表达式以允许只有一个点的数字?

/[^0-9\.]/g

它目前允许:

  • 0
  • 0.13
  • 0.13.1(这应该是不允许的)
4

6 回答 6

10

您的正则表达式与您所说的不匹配。您在字符类中使用了否定,并且也没有任何量词。目前它将匹配除..

根据您的要求,您可以使用此正则表达式:

/^\d+(\.\d+)?$/
于 2013-08-09T14:33:07.023 回答
4

使匹配成为积极的匹配:

/^\d*(\.\d+)?$/

任意数量的数字,可选地后跟一个点和至少一个数字。但是保持负匹配是不值得的。

如果您想禁止空字符串(原始正则表达式不会这样做),您可以这样做:

/^(?=.)\d*(\.\d+)?$/

但是你也可以只检查一个空字符串,反正看起来更好。

于 2013-08-09T14:32:36.737 回答
1

我想这应该做/^(\d*)\.{0,1}(\d){0,1}$//^(\d*)\.?(\d){0,1}$/

  • (\d*)表示小数点前的位数。

  • \.后跟{0,1}OR?将确保只有一个点。

  • (\d){0,1}只允许小数点后一位。

于 2017-07-25T08:30:55.370 回答
0

您可以尝试以下正则表达式 ^[-+]?\d*.?\d*$

于 2016-07-13T14:54:00.127 回答
-1

尝试以下操作:

/^(\d*)(\.\d*)?$/g
于 2013-08-09T14:33:46.300 回答
-1

尝试,

(value.match(/^\d+([.]\d{0,1})?$/))
于 2013-08-09T14:39:16.293 回答