Как получить подстроку в данном случае?

Есть функция, которая должна выделить из сроки определенную ее часть. На вход подаются строки строго опеределенного формата. В примере с переданной строкой всё работает:

const getAlbumTitle = (entryString) => {
  const albumTitleRegExp = /\]([^)]+)\#/
  const albumTitle = albumTitleRegExp.exec(entryString)
  const albumTitleResult = albumTitle && albumTitle[1] ? albumTitle[1].trim() : 'unknown album'

  return albumTitleResult
}

getAlbumTitle('Cradle of Filth [2006] Thornography #Black Metal')


Но если в названии альбома есть скобки - например если передать строку "Weezer [2016] Weezer (White Album) #Alternative Rock", то возвращается unknown album. Т.е. из-за скобок всё ломается.

Подаваемая строка всегда имеет формат "Артист [год релиза] Название альбома #Жанр". В данном случае из такой строки нужно вытащить название альбома. То, что у меня получилось, как видно, работает не всегда правильно. Как лучше сделать?
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
str.match(/\]\s*(.+?)\s*#/)?.[1] ?? '< unknown >'
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы