Разбивка строки на массив, содержащий подходящие и нет под regex строки, в их первичном порядке

94
06 февраля 2022, 04:40

Допустим есть строка qwerty#1 2#.qwe#qwe 33#qwe_ty###23#dfg#q==w qwertyuiop #qwer

С помощью данного регулярного выражения /#[\wА-Яа-яЁё]{3,50}/g

Регулярка ищет все подстроки начинающиеся с #, длиной от 3х до 50 символов (не включая #), которая может состоять из обоих регистров букв русского и латинского алфавитов и знака _

Я хочу получить следующий массив ['qwerty#1 2#.qwe', '#qwe', ' 33', '#qwe_ty', '###23', '#dfg', '#q==w qwertyuiop ', '#qwer']

Как не пытался это сделать красиво, так и не смог, выходили большие и медленные костыли.

Answer 1

const reg = /#[\wА-Яа-яЁё]{3,50}/g 
const str = '#qwerty#1 2#.qwe#qwe#qwe 33#qwe_ty###23#dfg#q==w   qwertyuiop #qwer'; 
let last = 0; 
let results = []; 
const matches = str.matchAll(reg); 
 
for (const match of matches) { 
    results.push(str.slice(last, match.index)); 
    results.push(match[0]); 
    last = match.index + match[0].length; 
} 
if (last < str.length) { 
    results.push(str.slice(last)); 
} 
results = results.filter(a => a) // Отсеиваем пустые строки 
console.log(results)

Это всё, что Я хотел, сумел сам. Внимательнее читайте сам вопрос, его понимания достаточно для написания кода. Работает с другими строками и regexp.

READ ALSO
Исключить ненужные значения при поиске

Исключить ненужные значения при поиске

Имеется рабочий код, который получает html-данные с помощью ajax

78
Получить и отправить данные из формы

Получить и отправить данные из формы

Приветствую знатоков WEB разработки, сам я в этой области новичок, делаю учебный проект, поэтому появился вопросЕсть такая форма:

57
Правильно ли настроен nginx?

Правильно ли настроен nginx?

Правильно ли настроен nginx? Сайт на nextjs запущен на 3000 порту со своим доменомБекенд написан на express

90