RegEx How to get value between tags excluding a word
<td align="right">1 883,5</td>
<td align="right"><font color="red">-0,56%</font></td>
<td align="right">1 890,4</td>
<td align="right">1 876,6</td>
<td align="right">99 993</td>
<td align="right">26 983</td>
<td align="right">161 944</td>
Мне нужно получить из этих строк:
1883,5
1890,4
1876,6
99993
26983
161994
Пожалуйста помогите мне. Мне нужно получить все числа в тегах, но не получать проценты
Ответы (1 шт):
Автор решения: vsemozhebuty
→ Ссылка
Поскольку деталей у вас маловато, вот приблизитльный вариант: получаем список ячеек, превращаем его в массив строк внутри ячеек, отфильтровываем строки с процентами и удаляем из оставшихся строк всё, кроме чисел и заятых.
const numbers = Array.from(
document.querySelectorAll('td'),
td => td.innerText,
)
.filter(string => !string.includes('%'))
.map(string => string.replace(/[^\d,]/g, ''));
console.log(numbers);
<table>
<td align="right">1 883,5</td>
<td align="right"><font color="red">-0,56%</font></td>
<td align="right">1 890,4</td>
<td align="right">1 876,6</td>
<td align="right">99 993</td>
<td align="right">26 983</td>
<td align="right">161 944</td>
</table>
Вариант с извлечением чисел из одной строки:
const data = document.querySelector('table').innerText;
const numbers = data.match(/[\d,\u00a0]+(?![%\d,])/g)
.map(string => string.replace(/\u00a0/g, ''));
console.log(numbers);
<table>
<td align="right">1 883,5</td>
<td align="right"><font color="red">-0,56%</font></td>
<td align="right">1 890,4</td>
<td align="right">1 876,6</td>
<td align="right">99 993</td>
<td align="right">26 983</td>
<td align="right">161 944</td>
</table>
Вариант с поиском в исходном коде:
const html = `
<td align="right">1 883,5</td>
<td align="right"><font color="red">-0,56%</font></td>
<td align="right">1 890,4</td>
<td align="right">1 876,6</td>
<td align="right">99 993</td>
<td align="right">26 983</td>
<td align="right">161 944</td>`;
const numbers = html.match(/(?<=>)([\d,]| )+(?=<)/g)
.map(string => string.replace(/ /g, ''));
console.log(numbers);