Шаблон, который вы пробовали (20\d|201\d|2020)
, также будет соответствовать 200 или 209.
Диапазон от 2010 до 2020 можно сопоставить, используя:
\b20(?:1[0-9]|20)\b
Regex demo
Вместо использования якорей можно использовать границы слов \b
в качестве якорей ^
и $
для подтверждения начала и конца строки.
Вы не нужно использовать return
, если вы опустите фигурные скобки в коде.
const YEARS_BETWEEN_2010_AND_2020_REGEX = /\b20(?:1[0-9]|20)\b/;
const MOVIE = ['Some Movie (2013)', 'Some Other Movie (2010)'];
console.log(MOVIE.filter((movie) => YEARS_BETWEEN_2010_AND_2020_REGEX.test(movie)));
Другим вариантом получения более точного c соответствия является использование группы захвата, и с обеих сторон соответствуют любому символу, кроме di git или установить начало или конец строки
(?:^|\D)20(?:1[0-9]|20)(?:$|\D)
или использовать отрицательный вид сзади (который пока еще широко не поддерживается всеми браузерами), утверждая, что слева
(?<!\d)(?:20(?:1[0-9]|20))(?!\d)
не указано di git