2014-01-07 4 views
2

Я хочу заменить, чтобы добавить строку в текст var, чтобы «обернуть» мой контент, а затем добавить его позже.jquery заменить строку из text() с неизвестными символами

К примеру у меня есть это в моей строке варе (в моем варе нет разрыва строки):

[th_section type="boxed" bgcolor="" txtcolor=""] 
[th_header type="h1" txtalign="txt-left" subtitle="essai subtitle" txtcolor=""] 
HEADER 1 
[/th_header] 
[th_five_sixths txtalign="txt-left" boxed="" last_column="true"] 
[th_header type="h5" txtalign="txt-left" subtitle="" txtcolor=""] 
100% Responsive Design 
[/th_header] 
Phasellus enim libero, blandit vel sapien vitae, condimentum ultricies magna et. Quisque euismod orci ut et lobortis aliquam. 
[/th_five_sixths] 
[/th_section] 

И я хочу, чтобы заменить/добавить р-тег, как это:

<p>[th_section type="boxed" bgcolor="" txtcolor=""]</p> 
<p>[th_header type="h1" txtalign="txt-left" subtitle="essai subtitle" txtcolor=""]</p> 
<p>HEADER 1</p> 
<p>[/th_header]</p> 
<p>[th_five_sixths txtalign="txt-left" boxed="" last_column="true"]</p> 
<p>[th_header type="h5" txtalign="txt-left" subtitle="" txtcolor=""]</p> 
<p>100% Responsive Design</p> 
<p>[/th_header]</p> 
<p>Phasellus enim libero, blandit vel sapien vitae, condimentum ultricies magna et. Quisque euismod orci ut et lobortis aliquam.</p> 
<p>[/th_five_sixths]</p> 
<p>[/th_section]</p> 

на самом деле, я ищу, как регулярное выражение, как это может быть:

$someDiv.replace('[th_*******]', '<p>[th_*******]</p>').replace('[/th_*******]', '<p>[/th_*******]</p>') 

Я не знаю, что это правильный путь, чтобы использовать заменить в этом случае. Имя между скобками может быть разным, кроме [th _...] и [/ th _...] Возможно, мне нужно использовать функцию, отличную от замены, я действительно не знаю ...

ответ

1

Я действительно плохо регулярное выражение, но я думаю, что это должно работать:

theString.replace(/\]([^\[]+)/g, function(m) { 
    return "]<p>" + m.slice(1) + "</p>"; 
}).replace(/(\[.*?\])/g, "<p>$1</p>"); // /(\[\/?th_[^\]]*\])/g 

http://jsfiddle.net/ujVrD/

+0

Спасибо! Работает как шарм. Можете ли вы немного объяснить мне процесс этого регулярного выражения. Я очень не знаком с такими вещами ... – lolo

+0

@lolo Приветствуется, что первый вызов '.replace() заменяет все символы между'] ... ['. Второй заменяет все начинается с '[' и заканчивается '' 'вторым аргументом,' $ 1' означает совпадающую строку между '(...)' в регулярном выражении. – undefined

+0

Хорошо! Большое спасибо! – lolo

0

Могу ли я направить вы до jQuerys .wrap() method. Он принимает выбранные вами элементы и обертывает их тегом, который вы определяете в первом аргументе методов. В вашем случае это будет .wrap('<p></p>'). Надеюсь, это поможет.

+0

спасибо за ваш ответ, но я не могу обернуть его, потому что это происходит из строки вар , Я не хочу вставлять в DOM. Я хочу поместить текст контейнера div контейнера в var, а затем заменить некоторую строку ... – lolo

Смежные вопросы