Как написать регулярку, которая выберет из текста только некоторые цифры
Ниже даны три строки текста, из этого текста нужно выбрать только те цифры, которые идут после слова file и собрать их в массив.
Текст который будет записан в файл с именем file1.txt (level-3.js)
Текст который будет записан в файл с именем file12.txt (level-3.js)
Текст который будет записан в файл с именем file123.txt (level-3.js)
Больше часа уже бьюсь, пробовал генераторы регулярок, но увы ничего не помогает. Максимум что я смог это написать вот это:
const allData = (data1 + data2 + data3)
.replace(/[^[0-9]/g, ' ')
.split(' ')
.filter((item) => item !== '');
//В data1, data2, data3 соответственно те 3 строки, выше.
Но проблема в том, что эта регулярка захватывает цифру 3, идущую за level-
Ответы (1 шт):
Автор решения: InDevX
→ Ссылка
Можно использовать позитивную ретроспективную (lookbehind) проверку и опережающую (lookahead) проверку.
- позитивная ретроспективная проверка:
(?<=expr1)expr2 - ищет совпадение с expr2 при условии, что перед ним находится expr1.
- опережающая проверка:
expr1(?=expr2) - ищет совпадение с expr1 при условии, что после него следует expr2
const data1 = 'Текст который будет записан в файл с именем file1.txt (level-3.js)';
const data2 = 'Текст который будет записан в файл с именем file12.txt (level-3.js)';
const data3 = 'Текст который будет записан в файл с именем file123.txt (level-3.js)';
const full = data1 + data2 + data3;
const result = full.match(/(?<=file)(\d+)(?=\.txt)/g);
console.log(result);