javascript - Javascript 中带小数的正则表达式

标签 javascript regex

我想要一个文本框的正则表达式,它只允许 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));
}

关于javascript - Javascript 中带小数的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11756227/

相关文章:

java - 在 Java 中验证用户输入的社会安全号码

javascript - 将对象键值对转换为Javascript中的一系列数组

javascript - 如何让 headroom.js 工作/一步一步

javascript时钟项目未显示到页面

regex - 使用 Grep 查找两个短语(包括短语)之间的文本 block

javascript - 替换字符串中的多个字母

javascript - React-Native 中的 Alt @decorators

javascript - 错误 : ENOENT: no such file or directory, 打开 '/moviedata.json'

html - 当文本中存在多个标签时,如何使用正则表达式将单个 html 标签与内部标签相匹配

javascript - 拆分 html,包括使用正则表达式拆分 ul 标签