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
  • 22,145
  • 4
  • 29
  • 53
James
  • 127
  • 10

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
  • 27,717
  • 28
  • 128
  • 190
0

Hope this help!

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

console.log(result)
Tân
  • 1
  • 15
  • 56
  • 102