0

我正在使用EXT-JS并使用 a为表单中的特定字段VType指定。regex

我需要此字段接受以下值: 1, 11, 11561.464, 1.0, 56.0,等并拒绝以下值:

.1, 1., 56.(我需要我的值以数字开头和结尾)

我使用了以下正则表达式:

  1. /^([0-9][0-9]*)([.])?([0-9]*[0-9])$/
    这接受像 21.,.1 2.2 这样的值并拒绝像 1., 2.,1.0 这样的值

  2. /^\d+(\.\d)?/
    这接受像 1.,11 这样的值。

  3. /^\d+\.?(\d+)$/
    这接受像 11., 1.1,11.1 这样的值并拒绝像 1 这样的值。

为什么它是相同的常规正则表达式拒绝像 1 这样的值。(一位数 + 小数,这是可以接受的)但接受像 11.(两位数 + 小数,这是完全不可接受的)这样的值

4

2 回答 2

4

您的第二种模式几乎一直存在。一件事:你忘记了弦尾锚:

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

现在不能有尾随句点。

另一件事:您也应该重复第二个\d+,除非您想将自己限制在小数点后一位:

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

最后,除非您明确需要,否则抑制捕获通常是一种好习惯:

/^\d+(?:\.\d+)?$/
于 2013-06-05T12:04:58.847 回答
1

你可以试试这个

/^\d+(\.\d+)?$/
于 2013-06-05T12:02:40.880 回答