Как сделать быстрый поиск с помощью регулярного выражения?

168
25 января 2018, 20:47

Моя регулярка работает медленно. Как ускорить процесс? Например, у меня есть такой хтмл текст test1<div>test2</div>. Я хочу все что в не div также завернуть в div. Как мне лучше это сделать?

Вот мой пример:

// между текстом который перед див и самим дивом вставляю текст ($html$)
.replace(/(<div[^>]*>.*<\/div>)/gi, '($html$)' + '$1')
// беру весь текст перед ($html$), то есть который вне div и заворачиваю в див
.replace(/(.*)\(\$html\$\)/gi, '<div>$1</div>')
// удаляю текст ($html$)
.replace(/\(\$html\$\)/, '')

P.S. У меня такой случай, что текст вне дива может быть только в начале.

Answer 1

Если нам действительно надо завернуть только текст, стоящий перед первым <div>, то нам не интересно содержимое <div>, достаточно только факта его наличия:

.replace(/(.*?)(?=<div[ >])/i, '<div>$1</div>');

Возможно без использования регулярок будет работать быстрее (замена в переменной a):

var pos=a.indexOf('<div');
if(pos>0) a='<div>'+a.substr(0,pos)+'</div>'+a.substr(pos);
READ ALSO
Обновление div в AJAX без перезагрузки

Обновление div в AJAX без перезагрузки

Подскажите, как в AJAX jQuery, сделать обновление одного конкретного <div>, без перезагрузки страницы:

149
background и прозрачность

background и прозрачность

У меня есть svg-файл для задника

119
Проблема с разрешением web speach

Проблема с разрешением web speach

Всем доброго времени суток, делаю что-то вроде приложения, есть html, css, js, хотел добавить web speech от chromeКод представлен ниже, хотя основная проблема...

173
Проверка на пустоту в массиве. JS

Проверка на пустоту в массиве. JS

Добрый деньПомогите советом пожалуйста

177