我找不到合适的正则表达式模式,即使这类问题很多。
我不希望用户能够输入或输入
<td><input type="number" pattern=" 0+\.[0-9]*[1-9][0-9]*$" name="itemConsumption" /></td>
我只想接受积极的整数
解决 不需要正则表达式,我不知道这个:D
<td><input type="number" pattern=" 0+\.[0-9]*[1-9][0-9]*$" name="itemConsumption" onkeypress="return event.charCode >= 48 && event.charCode <= 57"</td>
答案 0 :(得分:29)
要拨打除数字以外的任何输入,您可以使用
<input type="text" onkeypress="return (event.charCode == 8 || event.charCode == 0 || event.charCode == 13) ? null : event.charCode >= 48 && event.charCode <= 57" name="itemConsumption" />
^------------....
<form id="mfrm">
<table>
<tr>
<td>Enter number only: <input type="text" name="itemConsumption" onkeypress="return (event.charCode == 8 || event.charCode == 0 || event.charCode == 13) ? null : event.charCode >= 48 && event.charCode <= 57" /></td>
<td><input type="Submit"/></td>
</tr>
</table>
此处,event.charCode == 8 || event.charCode == 0 || event.charCode == 13
条件处理按下DELETE,BACKSPACE或ENTER键的情况(对Firefox很重要,请参阅下面的Mohit's comment和与启用ENTER键相关的datashaman's comment)。
event.charCode >= 48 && event.charCode <= 57
表示仅返回0(十进制代码48)和最多9(十进制代码57)的所有其他数字。
答案 1 :(得分:5)
要仅允许使用数字值,您可以按如下方式使用:
<td><input type="number" pattern="\d+" name="itemConsumption" /></td>
答案 2 :(得分:3)
如果是HTML5,那么您可以尝试min属性:
<input type="number" min="0">
答案 3 :(得分:2)
您可以使用类型, min 和 oninput
<input type="number" min="0" step="1" oninput="validity.valid||(value='');">
<form>
<label>Input with positive numbers only</label><br/><br/>
<input type="number" min="0" step="1" oninput="validity.valid||(value='');">
</form>
&#13;
答案 4 :(得分:2)
我尝试了许多不同的解决方案来实现这一目标,最后我想到了这个解决方案,它对我们来说是完美的。它可用于键入和复制/粘贴,但我找不到任何不需要的副作用。
<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 Mahirrao的解决方案,但是它将导致无效的击键被简单地忽略,而不会清空输入。
答案 5 :(得分:0)
您可以将此正则表达式用于整数[0-9] *或\ d * [0-9]是您可以键入0到9的范围,*表示不期望任何数字或者您可以键入无限数字
答案 6 :(得分:0)
也许this jQuery Codepen snipet对某人会有帮助。 用于type =“ number”(不是“ text”):
<input class="js-input-absint" type="number" step="1" min="18" max="150" name="age" value="50">
,只有[0-9]允许输入。在输入中将仅打印/粘贴具有最小-最大范围的数字[0-9](可选)。
一些说明:该代码在输入阶段仅显示数字,并且在输入无效数字值的情况下不会将值重置为“”(空),就像默认情况下对type =“ number”所做的那样。并且您不能将属性pattern =“ / ^ [0-9] * $ /”用作输入类型=“ number”。
var $inputAbsint = $('.js-input-absint');
if ($inputAbsint.length) {
$(document).on('keypress', '.js-input-absint', function (event) {
var allowed = /^[0-9]|Arrow(Left|Right)|Backspace|Home|End|Delete$/;
return allowed.test(event.key);
}).on('focusout paste', '.js-input-absint', function () {
var $input = $(this);
var defaultValue = this.defaultValue || $input.attr('min');
// Important(!): Timeout for the updated value
setTimeout(function () {
var current = $input.val();
var regexNumbers = new RegExp(/^[0-9]*$/, 'g');
var isNumbersOnly = regexNumbers.test(current);
// Clear wrong value (not numbers)
if ((current === '' || !isNumbersOnly) && defaultValue.length) {
$input.val(defaultValue);
current = defaultValue;
}
// Min/Max
var min = parseInt($input.attr('min'), 10);
var max = parseInt($input.attr('max'), 10);
var currentInt = parseInt(current, 10);
if (!isNaN(min) && !isNaN(currentInt) && currentInt < min) {
$input.val(min);
}
if (!isNaN(max) && !isNaN(currentInt) && currentInt > max) {
$input.val(max);
}
}, 100);
});
}
答案 7 :(得分:0)
您不能按键盘上的'-'按钮。
<!--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>
'109'的键控代码表示键盘的数字减号按钮。键盘代码“ 189”表示字符按钮上方的减号按钮。
答案 8 :(得分:-1)
您可以尝试使用此正则表达式:
^(0|[1-9][0-9]*)$
甚至像阿维纳什所说的那样简单:
^\d+$
答案 9 :(得分:-1)
最好在输入字段中使用以下内容,它将阻止您输入除整数之外的任何其他字符。
只接受整数。
onkeypress="return (event.charCode == 8 || event.charCode == 0) ? null : event.charCode >= 48 && event.charCode <= 57"
请参阅demo