can someone tell me why my code keeps returning null, it used to return a match now its not and i dont know whats wrong. I want it to find a match in the string for 1 hour
var error = "null";
var str = "1 hour "
var strCheck = str.match(/[1]\s[hour]\s/g);
if(String(strCheck) != error) {
alert("works!");
}
Check this..
var error = "null"; var str = "1 hour " var strCheck = str.match(/1 hour /g); if(strCheck != error) { alert("works!"); }
Explanation:
[]
is used to match a single character so [hour]
is not correct and if you have change in number of hours you can make it like this:
var error = "null"; var str = "1 hour " var strCheck = str.match(/[0-9][0-9] hour /g); if(strCheck != error) { alert("works!"); }
or Simply use \\d
to find a digit and \\d+
to find one or more digit.
For more see this its simple and clear.
The RegEx [1]\\s[hour]\\s
will not work. The character class without quantifiers []
is used to match only a single character from the characters within it. So, [hour]
will match one of the character from h
, o
, u
and r
. However, you want to match hour
as complete string.
To make the regex more dynamic and match even 10 hours
following regex can be used.
/\d+\s*hours?\s*/
Code:
var error = "null"; var str = "1 hour " var strCheck = str.match(/\\d+\\s*hours?\\s*/g); if (strCheck != null) { alert("works!"); } console.log(strCheck);
If you just want to check if the string contain a pattern, use RegExp#test
instead of String#match
.
/\d+\s*hours?\s*/.test(str)
I don't know what kind of validation you need with that regex, but this can be useful:
\d+\s(hour(s)?)
Explanation:
\\d+
One or more digits \\s
A blank space (hour(s)?)
a string hour with optional s at the end for plural. The match()
method returns an array with the results or null
if no match was found. So I suggest you simply check the result as a boolean instead of compare to "null"
string. Then you code could be like this:
var strCheck = str.match(/\d+\s(hour(s)?)/, g);
if (strCheck) {
alert("works!");
}
Some cases here .
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.