На codewars после прохождения всех тестов выскакивает ошибка. Регулярные выражения

function solution(str, ending){
  let reg = new RegExp(ending+'$')
  if(str.match(reg)!==null){return true;}
  else{return false;}
}

Задание состоит в том, чтобы найти в конце строки совпадение и вывести true || false. 12 тестов проходит, а потом получаю это:

SyntaxError: Invalid regular expression: /:-($/: Unterminated group
    at new RegExp
    at solution
    at check
    at 

Не могу понять, что не так с моей регуляркой. Ткните носом (пожалуйста)


Ответы (1 шт):

Автор решения: vsemozhebuty

Прежде чем создавать регулярное выражение из произвольной строки, нужно экранировать все символы, которые имеют особое значение в регулярках. В данном случае тест пытается найти смайлик с одной скобкой, но скобка служит особым символом в регулярках (наример, выделяет группу), и открывающая скобка без закрывающей будет ошибкой. Составьте список всех особых символов и экранируйте их.

Кстати, вам обязательно решать с регуляркой? Не проще ли будет с String.prototype.endsWith()?

→ Ссылка