Trying the regex very hard but could not get the desired result.
- Must begin with numbers and maximum of 4
- followed by only one allowed alphabet
Please have a look at below code.
var strings = [
'1h', //should match
'13s', //should match
'30m', //should match
'42hr', //should not match
'8 hours ', //should not match
'765765', //should not match
'5sec', //should not match
'23445345345s', //should not match
'335m' //should match
];
for (var i = 0; i < strings.length; i )
{
var match = strings[i].match(/\d{4}[h|m|s]{1}/g);
console.log(strings[i], (match ? "Match" : "Not match"));
}
CodePudding user response:
You regex should be:
/^\d{1,4}[hms]$/gm
First, you require 4 digits with d{4}
Change it to d{1,4}
to be one to four digits
Then add a $
to indicate the end of the string, so it doesn't allow more characters after the letter
Check out Regex101, Really useful for testing and understanding regex
CodePudding user response:
I've added a ^ to match from start
strings.filter(x => x.match(/^\d{1,4}[hms](?!\w)/g) )