Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обернуть текст (https://javascript.ru/forum/misc/34272-obernut-tekst.html)

vivalaakam 27.12.2012 11:33

Обернуть текст
 
Добрый день.
Помогите разобраться со следующей ситуацией=)
есть строка html, к примеру "text<span>abc</span>" (span может и отсутсвовать) , и нужно текст до span обернуть <a>. Пробовал регулярными выражениями, но в них не очень силен

"text abc<span>span text</span>".replace(/^(?:(.+)(?=(<span(?:.*)>)))|(?:(.+)(?!(<span)))$/gi , "<a>$1</a>$2")

выводит "<a>text abc</a><span>span text</span><a></a>", если без span, выведет "<a></a>"

Есть идеи как можно решить?

рони 27.12.2012 12:00

vivalaakam,
Вариант ...
var str =  "text abc<span>span text</span>";
str = str.replace(/(\w+?)(?=<span>|$)/gi , "<a>$1</a>");
alert(str);
str =  "text abc";
str = str.replace(/(\w+?)(?=<span>|$)/gi , "<a>$1</a>")
alert(str);

vivalaakam 27.12.2012 12:55

рони, спасибо. Только вот как его заставить искать с самого начала строки?

рони 27.12.2012 13:30

vivalaakam,
var str =  "text abc<span>span text</span>";
str = str.replace(/^([a-z ]+?)(?=<span>|$)/gi , "<a>$1</a>");
alert(str);
str =  "text abc";
str = str.replace(/^([a-z ]+?)(?=<span>|$)/gi , "<a>$1</a>")
alert(str);


Часовой пояс GMT +3, время: 21:52.