here is my below code in react which is accepting 0-9 values only the values i need to be accepted are 1 11 11.1 11.11 111.1 111.11
like so const handleKeyPress = (event) => {
if (!/[0-9]/.test(event.key)) {
event.preventDefault();
alert('Please enter a valid amount')
}
}
CodePudding user response:
I'm assuming that this is in the context of an <input>
field or something like that.
When you look at @Andrew Allison's regular expression you will see that it reads /^\d ....
as in "needs to start with a number". When you test any of your examples against this expression you will see that the expression is correct.
The problem is the context, i.e. event.key
. You are testing a single key here, but .
or ,
don't start with a number. You either need to test against the value of the field: .test(event.target.value)
or use a different expression, i.e. (\d|\.|,)
. The problem with the latter approach is that ...
, ,,1..
, etc. would also be valid, which presumably is not what you want.
CodePudding user response:
const handleKeyPress = (event) => {
if (!/^\d (?:[.,]\d{1,2})?$/.test(event.key)) {
event.preventDefault();
alert('Please enter a valid amount')
}
}
Although I'm almost certain this question has already been asked on StackOverflow. You need to search for it next time.