Я собираюсь написать редактор-табулятор для своего музыкального проекта, и мне нужно отформатировать названия аккордов. Все работает нормально, кроме специальных басов или высоких нот, например. Am7/bb\c#.
В этом примере это должно выглядеть как Am7/Bb\C#, а символы после / или \ должны быть <sup> в html.
Итак, мой вопрос: как я могу написать выражение с заменой /bb, \c# или только /a, \f? Не обязательно, чтобы каждый аккорд имел /* или a* (басовая или высокая нота). Большое спасибо Детлеф
На данный момент я форматирую свои аккорды следующим образом:
function formatChords(obj, value) {
if (!value) return;
var newValue = value;
var formated = newValue.replaceAll('#', '<sup class = "superSS">#</sup>');
formated = formated.replaceAll('b', 'B');
formated = formated.replaceAll('bb', 'B<sup class = "superSS">b</sup>');
formated = formated.replaceAll('BB', 'B<sup class = "superSS">b</sup>');
formated = formated.replace(new RegExp("\\d", "g"), '<sup class = "superSS">$&</sup>');
formated = formated.charAt(0).toUpperCase() + formated.slice(1);
obj.html(formated);
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используйте replace с регулярным выражением, чтобы оно соответствовало шаблону, и замените его нужным форматом:
function formatChords(obj, value) {
if (!value) return;
var newValue = value;
var formated = newValue.replaceAll('#', '<sup class = "superSS">#</sup>');
formated = formated.replaceAll('b', 'B');
formated = formated.replaceAll('bb', 'B<sup class = "superSS">b</sup>');
formated = formated.replaceAll('BB', 'B<sup class = "superSS">b</sup>');
formated = formated.replace(new RegExp("\\d", "g"), '<sup class = "superSS">$&</sup>');
formated = formated.charAt(0).toUpperCase() + formated.slice(1);
formated = formated.replace(//([a-gA-G]#?b?)/g, '/<sup class = "superSS">$1</sup>');
formated = formated.replace(/\\([a-gA-G]#?b?)/g, '\\<sup class = "superSS">$1</sup>');
obj.html(formated);
}
Выражения должны соответствовать косой или обратной косой черте, за которой следует примечание.