@pantsarny

Как написать регулярное выражение на JS?

Есть текст со следующими вхождениями:
какой-то текст Блок А, Б, Г какой-то текст
какой-то текст Группа №10, №10.1, №11.4 какой-то текст
хочу следующий результат
какой-то текст <a href="А">Блок А</a>, <a href="Б">Б</>, <a href="Г">Г</a> какой-то текст<br>
какой-то текст <a href="10">Группа №10</a>, <a href="10.1">№10.1</a>, <a href="11.4">№11.4</a> какой-то текст


В данный момент получается только вот так:
yo (text) {
        text = text.replace(/Блок ([А-Я]{1})/ig, function (match, contents, offset, input_string) {
          return '<a href="/blocks/' + contents + '" class="underline">' + match + '</a>'
        })
        text = text.replace(/Группа № ([\d.]+)/ig, function (match, contents, offset, input_string) {
          return '<a href="/drug-groups/' + contents + '" class="underline">' + match + '</a>'
        })
        return text
      },


То есть получается заменить только первую букву или номер группы.
Как сделать захват всех букв и номеров по паттерну и осуществить их замену ссылками с их значениями?
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 1
viewDidLoad
@viewDidLoad
А если матчить только названия (А, Б, №10.1), но с условием, что слева пробел, а справа необяз. запятая + пробел? недостаточно строго получится?

str
  .replace(/(\s)([А-Я])([\s|,])/g, '$1<a href="$2">$2</a>$3')
  .replace(/(\s)(№)(\d+(?:\.\d+)?)([\s|,])/g, '$1<a href="$3">$2$3</a>$4');
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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