当输入type="number"时,regex验证是否有效?

Does regex validation work when input type="number"?

本文关键字:quot 验证 regex 有效 是否 number 输入 type      更新时间:2023-09-26

当在输入字段上使用 type="number" 时,regex验证似乎不起作用。

<input type="number" step="any" min="0" max="24" value="0">

使用 step, min, max 的新的基于浏览器的验证按预期工作。然而,这是不一致的跨浏览器?

http://jsfiddle.net/EkL3k/1/


如何使一个数字字段验证使用正则表达式?

如果有人有信息,我也对区分数字和文本字段的其他因素感兴趣。

指出

我发现检查空字符串导致验证触发如果 number字段的条件不满足

数字字段执行自己的验证,如果它包含非数字字符,则该值将自动删除,直到给出正确的值。您可以通过console.log(value)看到这一点。

所以你也可以检查空字符串

function check(value, msg) {
  var valid = ((value != '') && /^'d*'.?'d*$/.test(value));    
  if (valid) {
      document.getElementById(msg).style.display = "none";
  } else {
      document.getElementById(msg).style.display= "inline";
  }
  return valid;
}
http://jsfiddle.net/EkL3k/6/

RegEx不能工作,因为返回值是一个数字,而不是一个字符串。当您强制返回值为字符串格式时,它会"按预期"工作:

var valid = /^'d*'.?'d*$/.test(String(value));

您可能需要阅读如何获取原始值和场吗?因为它表明您没有来验证type=number输入。

添加此代码并为您的输入添加id。

$(document).ready(function() {
$("#txtboxToFilter").keydown(function (e) {
    // Allow: backspace, delete, tab, escape, enter and .
    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
         // Allow: Ctrl+A
        (e.keyCode == 65 && e.ctrlKey === true) || 
         // Allow: home, end, left, right
        (e.keyCode >= 35 && e.keyCode <= 39)) {
             // let it happen, don't do anything
             return;
    }
    // Ensure that it is a number and stop the keypress
    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
        e.preventDefault();
    }
});
});
http://codepen.io/anon/pen/IDEGu