数字和一位小数的正则表达式

Mat*_*iel 2 javascript regex jquery

我似乎无法得到一个简单的正则表达式.这就是我现在所拥有的:

$(".Hours").on('input', function (e) {

    var regex = /^\d+(\.\d{0,2})?$/g;

    if (!regex.test(this.value)) {
        if (!regex.test(this.value[0]))
            this.value = this.value.substring(1, this.value.length);
        else
            this.value = this.value.substring(0, this.value.length - 1);
    }
});
Run Code Online (Sandbox Code Playgroud)

我需要用户只能输入数字和一个小数(小数点后只有两个数字).它现在正常工作,但用户不能以小数开头.

可接受:23.53 0.43 1111.43 54335.34 235.23 .53 <---不工作

不可接受:0234.32 <---用户当前可以这样做23.453 1.343 .234.23 1.453.23

对此有何帮助?

Tus*_*har 10

fiddle Demo

RegExp -

^(\d+)?([.]?\d{0,2})?$
Run Code Online (Sandbox Code Playgroud)

说明

Assert position at the beginning of the string «^»
Match the regular expression below and capture its match into backreference number 1 «(\d+)?»
   Between zero and one times, as many times as possible, giving back as needed (greedy) «?»
   Match a single digit 0..9 «\d+»
      Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
Match the regular expression below and capture its match into backreference number 2 «([.]?\d{0,2})?»
   Between zero and one times, as many times as possible, giving back as needed (greedy) «?»
   Match the character “.” «[.]?»
      Between zero and one times, as many times as possible, giving back as needed (greedy) «?»
   Match a single digit 0..9 «\d{0,2}»
      Between zero and 2 times, as many times as possible, giving back as needed (greedy) «{0,2}»
Assert position at the end of the string (or before the line break at the end of the string, if any) «$»
Run Code Online (Sandbox Code Playgroud)


小智 5

这里有一个建议:/^((\d|[1-9]\d+)(\.\d{1,2})?|\.\d{1,2})$/

允许:0,,,,,,,, ...0.00100​​​100.1100.10.1.10

拒绝 : 01, 01.1, 100., .100, ....