@navodchik131

Как выбрать все цифры в тексте?

Всем добрый день. Суть в следующем. Есть допустим строка

"
Travel <sup style="color:#000;" data-footnote-merchant="1676" data-footnote-index="0" class="sup-comment comm_125">125</sup>Rewards 3000 Loyalty Good and Excellent Credit
"

В ней нужно выбрать цифры, в данном случае только 3000
Написал регулярное выражение /[-|$]?\d+([.,]\d{0,})?[%|x|X]?/ (оно по мимо цифр еще и знаки выделяет рядом с цифрой, например $)

Вроде работает нормально. Но в исходном тексте есть тег <sup> с атрибутами. И вот в нем не надо ничего менять

Нашел этот атрибут следующей регуляркой /<sup[^>]*>(.*?)<\/sup>/

Как объединить их? чтоб он искал цифры в тексте, но не искал в этом промежутке?

В регулярках не очень силен, это все на что меня хватило.
Буду очень признателен за любую помощь
  • Вопрос задан
  • 970 просмотров
Решения вопроса 1
zendor
@zendor
Если у вас <sup></sup> всегда находится вначале, то достаточно этого:
const str = 'Travel <sup style="color:#000;" data-footnote-merchant="1676" data-footnote-index="0" class="sup-comment comm_125">125</sup>Rewards 3000 Loyalty Good and Excellent Credit';
const res = str.replace(/\d+(?!.*<\/sup>)/g, '<span>$&<\/span>');

А если нет, то:
const str = 'Travel <sup style="color:#000;" data-footnote-merchant="1676" data-footnote-index="0" class="sup-comment comm_125">125</sup>Rewards 3000 Loyalty Good and Excellent 500 Credit <sup style="color:#000;" data-footnote-merchant="1676" data-footnote-index="0" class="sup-comment comm_125">666</sup> <sup>000</sup> Good and Excellent 666';
const res = str.replace(/<sup.*?>.*?<\/sup>|(\d+)/g, (m, p1) => p1 ? `<span>${p1}<\/span>` : m);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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