gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 20:57:46 30 4
gpt4 key购买 nike

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

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com