document.querySelector('button').addEventListener('click', () => {
const block = document.querySelector('#block');
block.innerHTML = block.innerHTML.replace(/(.*?)<h1>/, (_, $1) => {
const words = $1.trim().split(' ');
return `<h1>${words.slice(0, -2).join(' ')}</h1> ${words.slice(-2).join(' ')} <h1>`;
});
});
я понимаю, что это делается через регуляркувы должны понимать, что это не делается через регулярки
const {JSDOM} = require('jsdom');
const group = (str) => {
const {document} = new JSDOM(str.replace(/(\[|\])/g, (_, s) => ({
'[': '<',
']': '>'
})[s])).window;
return [...document.body.querySelectorAll('*')].reduce((acc, elem) => {
acc[elem.tagName] = [...elem.childNodes].reduce((str, elem) => {
return str + (elem.nodeType === document.TEXT_NODE ? elem.textContent : '');
}, '');
return acc;
}, {});
};
console.log(group('[m]Галифакс ([i]город в Канаде[/i])[/m]'));
console.log(group('[m][p]г.[/p] Хадалык ([i]Синьцзян-Уйгурский[c] авт.[/c] р-н, КНР[/i])[/m]'));
const result = str
.replace(/([а-яa-zё-]+).*?(\s|$)/gi, (r, s) => s.length <= 4 ? '' : r)
.replace(/[^а-яa-zё\w\s-]/gi, '');
console.log(result);
regex[1].replace(/<(.+?)>/g, (s, r) => {
return r === 'br' ? s : '<' + r + '>';
});