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?

Original source

Related problems