Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 仅用于正整数的HTML输入(类型=数字)_Regex_Html_Validation - Fatal编程技术网

Regex 仅用于正整数的HTML输入(类型=数字)

Regex 仅用于正整数的HTML输入(类型=数字),regex,html,validation,Regex,Html,Validation,我找不到合适的正则表达式模式,尽管在这方面有很多问题 我不希望用户能够键入或输入 <td><input type="number" pattern=" 0+\.[0-9]*[1-9][0-9]*$" name="itemConsumption" /></td> -1.0(负值) 字符串值和任意字符 1.0(十进制值) 无射程限制 我只想接受正整数 解决 不需要正则表达式,我不知道这个:D <td><input type="number"

我找不到合适的正则表达式模式,尽管在这方面有很多问题

我不希望用户能够键入或输入

<td><input type="number" pattern=" 0+\.[0-9]*[1-9][0-9]*$" name="itemConsumption" /></td>

  • -1.0(负值)
  • 字符串值和任意字符
  • 1.0(十进制值)
  • 无射程限制
  • 我只想接受正整数

    解决 不需要正则表达式,我不知道这个:D

    <td><input type="number" pattern=" 0+\.[0-9]*[1-9][0-9]*$" name="itemConsumption" onkeypress="return event.charCode >= 48 && event.charCode <= 57"</td> 
    

    只允许使用数值,如下所示:

    <td><input type="number" pattern="\d+" name="itemConsumption" /></td>
    

    要禁止除数字以外的任何输入,您可以使用

    <input type="text" onkeypress="return (event.charCode == 8 || event.charCode == 0 || event.charCode == 13) ? null : event.charCode >= 48 && event.charCode <= 57" name="itemConsumption" />
                       ^------------....
    
    
    ^------------....
    
    
    仅输入数字:
    
    最好在输入字段中使用以下字符,它将阻止您输入除整数以外的任何其他字符

    只接受整数

    onkeypress="return (event.charCode == 8 || event.charCode == 0) ? null : event.charCode >= 48 && event.charCode <= 57"
    

    onkeypress=“return(event.charCode==8 | | event.charCode==0)?null:event.charCode>=48&&event.charCode如果涉及HTML5,则可以尝试属性:

    <input type="number" min="0">
    

    您可以将此正则表达式模式用于整数[0-9]*或\d*
    [0-9]是您可以键入0到9的范围,*表示不需要任何数字,或者您可以键入无限数

    您可以使用键入min输入

    <input type="number" min="0" step="1" oninput="validity.valid||(value='');">
    
    
    
    
    仅用正数输入

    也许会对某人有所帮助。 用于type=“number”(不是“text”):

    
    
    仅允许[0-9]输入。在输入中,将仅打印/粘贴具有最小-最大范围(可选)的数字[0-9]

    一些解释:该代码在输入阶段仅显示数字,如果输入的数字值无效,则不会将该值重置为“”(空)。对于输入类型=“数字”,您不能使用属性模式=“/^[0-9]*$/”

    var$inputAbsint=$('.js input absint');
    如果($InputBSint.length){
    $(文档).on('keypress','js input absint',函数(事件){
    允许变量=/^[0-9]|箭头(左|右)|退格|主页|结束|删除$/;
    允许返回.test(event.key);
    }).on('focusout paste','js input absint',函数(){
    var$input=$(此);
    var defaultValue=this.defaultValue | |$input.attr('min');
    //重要提示(!):更新值超时
    setTimeout(函数(){
    var current=$input.val();
    var regexNumbers=new RegExp(/^[0-9]*$/,'g');
    var isNumbersOnly=regexNumbers.test(当前);
    //清除错误值(不是数字)
    if((当前==“”| |!isNumbersOnly)&&defaultValue.length){
    $input.val(默认值);
    当前=默认值;
    }
    //最小/最大
    var min=parseInt($input.attr('min'),10);
    var max=parseInt($input.attr('max'),10);
    var currentInt=parseInt(当前,10);
    如果(!isNaN(min)&&!isNaN(currentin)&¤tinmax){
    $input.val(最大值);
    }
    }, 100);
    });
    }
    
    您不能按键盘上的“-”按钮

    <!--HTML Code is below-->
    <input type="text" name="value1" id="value1" class="form-control" required="required" onkeyup="keyCode(event)">
    
    <!--JQuery Code is below-->
    <script>
           $(document).ready(function() {
            $value1.on("keyup", function keyCode(event){
                var x = event.keyCode;
                if (x == 109 || x == 189) {
                    event.preventDefault();
                    alert ("You can't enter minus value !");
                }
            });
          });
    </script>
    
    
    $(文档).ready(函数(){
    $value1.on(“键控”,功能键控代码(事件){
    var x=event.keyCode;
    如果(x==109 | | x==189){
    event.preventDefault();
    警告(“您不能输入负值!”);
    }
    });
    });
    

    “109”的键码代表键盘的数字侧减号按钮。“189”的键码代表字符按钮上方的减号按钮。

    我尝试了许多不同的解决方案来实现这一点,最后我找到了这个,它对我们来说非常适合。它可以用于打字和复制/粘贴,我找不到任何不需要的ide效果

    <form>
        <input
            type="number"
            min="0"
            step="1"
            onfocus="this.previousValue = this.value"
            onkeydown="this.previousValue = this.value"
            oninput="validity.valid || (value = this.previousValue)"
        />
    </form>
    
    
    

    它类似于Nikhil Mahirro的解决方案,但它会导致无效的击键被忽略而不清空输入。

    为什么要使用锚定?模式属性默认被锚定。@Stribizev,对我来说,它使表达式更严格它看起来像
    /^(?:^\d+$)$/
    用于内部引擎。相当笨拙:)@Stribizev,感谢您的教训,它看起来真的很笨拙。我主要使用sql的regexp,因为我不知道这一点。这一行仍然接受负值-。(供将来参考)我的两分钱:
    。请说明您希望允许的内容。我认为这会更容易。我认为您缺少一件事:
    模式
    属性只允许在提交时控制数据。用户键入时不允许。请尝试。@SCS:请提供一些反馈,我们对您是否解决了该问题感兴趣。@stribizev感谢您的帮助代码。如果添加了上述代码,firefox backspace和delete键将无法正常工作。@MohitAdwani:Try:
    onkeypress=“return(event.charCode==8 | | event.charCode==0)?null:event.charCode>=48&&event.charCode现在工作正常。我认为你应该更新你的答案。或者,您发布的内容可能是用户想要的。您还应该在其中添加字符代码13-否则,您在该字段中时无法按Enter键提交表单。这可能是使用复制粘贴的无效值的解决方法(或滥用)。为什么要重新发布我的答案?请在答案中发布代码,以防出现链接expires@Harvey,是的,最大值也适用,但本例仅适用于正数。这很完美,也适用于粘贴,而@wiktor stribiżew的解决方案不适用
    
    <!--HTML Code is below-->
    <input type="text" name="value1" id="value1" class="form-control" required="required" onkeyup="keyCode(event)">
    
    <!--JQuery Code is below-->
    <script>
           $(document).ready(function() {
            $value1.on("keyup", function keyCode(event){
                var x = event.keyCode;
                if (x == 109 || x == 189) {
                    event.preventDefault();
                    alert ("You can't enter minus value !");
                }
            });
          });
    </script>
    
    <form>
        <input
            type="number"
            min="0"
            step="1"
            onfocus="this.previousValue = this.value"
            onkeydown="this.previousValue = this.value"
            oninput="validity.valid || (value = this.previousValue)"
        />
    </form>