我在Web输入中的正则表达式有什么问题?

时间:2017-04-24 09:02:13

标签: javascript regex

我想限制一个正整数或0.所以我写了这段代码:

<input type="text" name="age" id="age" value="${po.age}"  
     onkeyup="value=value.replace(/[^[1-9]\d*|0]/g,'')" 
     style="ime-mode:disabled;" onpaste="return false;"
    />

但我发现我只能输入1-9。如果我输入0,它将被删除。如何解决?

5 个答案:

答案 0 :(得分:3)

您可以使用number类型的输入并将min值设置为0:

&#13;
&#13;
Try me:
  <input type="number" min="0">
&#13;
&#13;
&#13;

答案 1 :(得分:2)

你可以试试这个:

<input type="text" name="age" id="age" value="${po.age}" onkeyup="value = value.replace(/[a-z]|-/gi, ''); value = parseInt(value.match(/\d+|\./gi).join('')) || '';" style="ime-mode:disabled;" onpaste="return false;"
/>

https://jsfiddle.net/2vamj5w0/

答案 2 :(得分:1)

如果您需要任何数字后跟零

,您只需编写正则表达式即可

/ [1-9] \ d * [0] {1} /

答案 3 :(得分:0)

只需将代码value=value.replace(/[^[1-9]\d*|0]/g,'')更改为value=value.replace(/[^[0-9]\d*/g,'') 所以它看起来像

<input type="text" name="age" id="age"  onkeyup="value=value.replace(/[^[0-9]\d*/g,'')" style="ime-mode:disabled;" onpaste="return false;" />

替代方案你可以尝试这个

<input name="number" onkeyup="if (/\D/g.test(this.value)) this.value = this.value.replace(/\D/g,'')">

答案 4 :(得分:0)

你能用这样的东西:

value=isNaN(parseInt(value,10))?"":parseInt(value,10)<0?"":parseInt(value,10)