2

The following code was my attempt to write a Regular Expression that would match both "cat" and "car" strings.

(function (){
  
    console.log(/(ca(t|r))+?/.exec(["cat", "car", "catcoon"]));
  })()

The "ca" would be matched first, then the method would look for either a "t" or a "r". It is then wrapped with ()+? to allow for multiple matches. However, the console shows ["cat", "cat", "t"] indicating that is stuck after the first match.

prasanth
  • 21,342
  • 4
  • 27
  • 50
James
  • 127
  • 9

2 Answers2

2

exec syntax is:

regexObj.exec(str)

Parameters

str The string against which to match the regular expression.

MDN

Your not passing in a string, your passing in an array. JavaScript will corece this into a string as best it can. Basically you need:

(function (){
   var arr = ["cat", "car", "catcoon"];
   for (var i = 0; i < arr.length; i++) {
     var str = arr[i];
     console.log(/(ca(t|r))+?/.exec(str));
   }
})()
Liam
  • 25,247
  • 27
  • 110
  • 174
0

Hope this help!

var result =["cat", "car", "catcoon", "cat", "car", "catcoon"].filter(x => /^ca[tr]$/.exec(x));

console.log(result)
Tân
  • 1
  • 14
  • 51
  • 92