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?
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?
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
nullif there are none.
Since null evaluates to false,
if ( string.match(regex) ) { // There was a match. } else { // No match. } 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:

Use .test if you want a faster boolean check. Use .match to retrieve all matches when using the g global flag.
Don't forget to take into consideration the global flag in your regexp :
var reg = /abc/g; !!'abcdefghi'.match(reg); // => true !!'abcdefghi'.match(reg); // => true reg.test('abcdefghi'); // => true reg.test('abcdefghi'); // => false <= This is because Regexp keeps track of the lastIndex when a new match is found.
.test()? isn't the point of .test() to check if the string has a matching regexp?