regex.test V.S. string.match to know if a string matches a regular expression
javascript, performance, regex
Solution
Basic Usage
First, let's see what each function does:
regexObject.test( String )
Executes the search for a match between a regular expression and a specified string. Returns true or false.
string.match( RegExp )
Used to retrieve the matches when matching a string against a regular expression. Returns an array with the matches or `null` if there are none.
Since `null` evaluates to `false`,
if ( string.match(regex) ) {
// There was a match.
} else {
// No match.
}
Performance
Is there any difference regarding performance?
Yes. I found this short note in the MDN site:
If you need to know if a string matches a regular expression regexp, use regexp.test(string).
Is the difference significant?
The answer once more is YES! This jsPerf I put together shows the difference is ~30% - ~60% depending on the browser:
Conclusion
Use `.test` if you want a faster boolean check. Use `.match` to retrieve all matches when using the `g` global flag.
Problem
Many times I'm using the string `match` function to know if a string matches a regular expression. ``` if(str.match(/{regex}/)) ``` Is there any difference between this: ``` if (/{regex}/.test(str)) ``` They seem to give the same result?