Вы получаете ноль, потому что эта часть -|beginners|course
является чередованием , которое будет соответствовать либо -
, beginners
или course
. Вы используете совпадение, чтобы получить значение от объекта, но объект содержит -beginners
и -course
Если вы хотите выполнить замену, и перед ней должно быть хотя бы 1 слово, вы можете использовать группу захвата $1
в замене и сопоставьте после нее то, что вы хотите удалить.
(\w+(?:-\w+)*)-beginners-course\b
Regex demo
const pageName = 'spanish-beginners-course';
const language = pageName.replace(/(\w+(?:-\w+)*)-beginners-course\b/g, "$1");
console.log(language)
[
'spanish-beginners-course',
'italian-beginners-course',
'spanish-italian-beginners-course',
'donotremove!-beginners-course'
]
.forEach(s => console.log(s.replace(/(\w+(?:-\w+)*)-beginners-course\b/g, "$1")));