Reputation: 47945
I have this regex on Javascript
var myS = "00 - ??:??:?? - a";
var removedTL = myS.match(/^(\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)/);
and I need to return "false" if myS
is not in that format, true otherwise.
I mean :
var myS = "00 - ??:??:?? - a"; // TRUE
var myS = "00 - ??:?:?? - a"; // FALSE
how can I check if the regex has matched the string or not?
Upvotes: 61
Views: 100131
Reputation: 101
Since I also prefer using match you could do the following workaround to get a Boolean result:
var myS = "00 - ??:??:?? - a"
var removedTL = myS.match(/^(\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)/) != null
Upvotes: 1
Reputation: 697
var myS = "00 - ??:??:?? - a";
var patt = new RegExp("^(\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)");
var removedTL = patt.test(myS);
removedTL will hold a boolean value true if matched, false if not matched
Upvotes: 9
Reputation: 385108
The more appropriate function here might be RegExp.test
, which explicitly gives you true or false.
console.log(/lolcakes/.test("some string"));
// Output: false
console.log(/lolcakes/.test("some lolcakes"));
// Output: true
Upvotes: 164
Reputation: 322462
Use a double logical NOT operator.
return !!removedTL;
This will convert to true/false
depending on if matches are found.
No matches gives you null
, which is converted to false
.
One or more matches gives you an Array, which is converted to true
.
As an alternative, you can use .test()
instead of .match()
.
/^(\d\d) - (\?\?|10|0\d):(\?\?|[0-5]\d):(\?\?|[0-5]\d) - (.*)/.test( myS );
...which gives you a boolean result directly.
Upvotes: 26