繁体   English   中英

Javascript中带十进制数字的正则表达式

[英]Regular Expression in Javascript for number with decimal

我想要一个仅允许3位数字并通过以下条件的文本框正则表达式:

  1. 仅数字(234或123)或
  2. 末尾只有一位小数(55.1)
  3. 不应留空格
  4. 如果使用十进制,则在十进制之前/之后也应该有一个数字(555.或12或.12不应被允许)

我有以下RE,部分有效:

/^\d{0,3}$|^\d{0,2}[\.]\d{1}$/

有什么帮助修改吗?

看来问题是附加的:

我在按键时使用代码。 因此,它会在按键时验证每个按下的值。

  if (window.event)    {
        knum = e.keyCode;
    }
    else if (e.which)    {
        knum = e.which;
    }
    kchar = String.fromCharCode(knum);
    numcheck = /^\d{0,3}$|^\d{0,2}[\.]\d{1}$/;

    alert(numcheck.test(kchar));

对于任何十进制按键,它都返回false。 即使我输入55,然后尝试将中间的小数设为5.5,ite也会返回false。

您至少需要1个数字,但最多3个数字: \\d{1,3}

要么

小数点前必须有至少1位但不超过2位数字,小数后必须有1位: \\d{1,2}[.]\\d

因此这些组合在一起:/( /(^\\d{1,3}$|^\\d{1,2}[.]\\d$)/

更新:

您正在测试在按键事件上添加的字符,而不是输入字段的完整值。 这永远不会达到预期的结果。

document.getElementById("yourfield").onkeyup = function(e) {

    // the event
    if (!e) e = window.event;

    // determine the target of the keyup event (the input field)
    var targ;
    if (e.target)
       targ = e.target;
    else if (e.srcElement)
       targ = e.srcElement;
    if (targ.nodeType == 3) // defeat Safari bug
       targ = targ.parentNode;

    // get the value
    kchar = targ.value;
    numcheck = /^\d{0,3}$|^\d{0,2}[\.]\d{1}$/;

    // test
    alert(numcheck.test(kchar));
}

尝试/^\\d{1,3}|(\\d{1,2}\\.\\d)$/

您的字符类不应转义句号,因此应为[.] ,尽管我更喜欢只写\\. 因为为一个角色创建一个类很浪费。 同样,当\\d表示完全相同的内容时, \\d{1}是多余的。 我还假设您也不想允许使用空文本框,所以我写了一些允许1-3位数或1-2位数的句点,然后再增加一个数字的东西。 如果那是错误的,则可以将第一个\\d的范围更改回{0,3} ,这将允许一个文本框完全不包含任何内容。

使用此re:

/^\d{1,3}$|^\d{1,2}[.]\d$/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM