2017-01-16 2 views
0

У меня есть следующая строка.Найти строку и добавить лишний в конце

This is content 
[divider space="123" anything="123"] 
more content 
[divider space="123"] 
some more text or shortcodes 

задача состоит в том, чтобы найти первую строку [разделитель объявлений, то в то же время найти] один раз] найден добавить [/ делитель] в конце. Таким образом, окончательный выпуск станет следующим:

This is content 
[divider space="123" anything="123"][/divider] 
more content 
[divider space="123"][/divider] 
some more text or shortcodes 

со следующим кодом Я могу найти строку.

str = 'This is content[divider space="123" anything="123"][/divider]more content[divider space="123"][/divider] some more text or shortcodes'; 
str = str.match(divider(.*)]"); 

Как я могу найти первую строку, а затем вторую строку и добавить что-то [/ divider] после этого.

ответ

0

Вы можете использовать функцию replace и передать функцию внутри

$("p").html($("p").html().replace(/\[divider ([a-z]+\="\d+"\s?)+\]/g, s => s + "[/divider]"));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p> 
 
This is content 
 
[divider space="123" anything="123"] 
 
more content 
 
[divider space="123"] 
 
some more text or shortcodes 
 
</p>

+0

Спасибо Ричарду. Похоже, что это сработает, однако, пожалуйста, проверьте мою скрипку, не работает https://jsfiddle.net/5opg7dq4/ – Themer

+0

Привет @ Рихард Гамильтон, я нашел проблему, ее с помощью Regex, первая проблема заключается в том, имя переменной содержит заглавную букву, например, если ее anyThing = "123" она не работает, во-вторых, если какой-либо атрибут пуст, например, что-либо = "" он снова перестает работать, можете ли вы изменить регулярное выражение, вот скрипка : https://jsfiddle.net/5opg7dq4/4/ – Themer

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