Je ne trouve pas le bon motif de regex pour cela, même s'il y a beaucoup de questions de ce genre.
Je ne veux pas que l'utilisateur puisse taper ou entrer
<td><input type="number" pattern=" 0+\.[0-9]*[1-9][0-9]*$" name="itemConsumption" /></td>
Je veux seulement accepter des nombres entiers positifs
RESOLUpas besoin de regex, je ne savais pas ceci: D
<td><input type="number" pattern=" 0+\.[0-9]*[1-9][0-9]*$" name="itemConsumption" onkeypress="return event.charCode >= 48 && event.charCode <= 57"</td>
Pour autoriser toute entrée sauf numérique, vous pouvez utiliser
<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>
Ici, la condition event.charCode == 8 || event.charCode == 0 || event.charCode == 13
gère le cas où les touches DELETE, BACKSPACE ou ENTER sont enfoncées (important pour Firefox, voir le commentaire de Mohit ci-dessous et le commentaire de datashaman lié à l'activation de la touche ENTRÉE).
Le event.charCode >= 48 && event.charCode <= 57
signifie que seulement 0 (code décimal 48) et tous les autres chiffres jusqu'à 9 (code décimal 57) seront renvoyés.
Pour autoriser uniquement les valeurs numériques, vous pouvez utiliser comme suit:
<td><input type="number" pattern="\d+" name="itemConsumption" /></td>
Vous pouvez utiliser type , min et 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>
S'il s'agit de HTML5, essayez plutôt l'attribut min :
<input type="number" min="0">
Vous pouvez utiliser ce motif regex pour les nombres entiers [0-9] * ou\d * [0-9] est une plage que vous pouvez taper de 0 à 9 et * signifie ne pas attendre de nombre ou peut-être taper des nombres infinis