Проблемы с регулярным выражением и BBCode

0

Привет, ребята, я пытался сегодня сделать bbcode, но я действительно не могу понять регулярное выражение, я хотел преобразовать html-код в bbcode, попытался несколько попыток, но не работал вообще.

Вот код HTML:

<SPAN STYLE="FONT-SIZE:18PX">Hello</SPAN>
---or---
<span style="font-size:18px">Hello</span>

Я хотел создать регулярное выражение/замену, которое преобразует его в

[size=18]Hello[/size]

Можно ли делать только с регулярным выражением/заменой? Я попытался использовать некоторые библиотеки, чтобы сделать это, но также не удалось.

Здесь функция, которую я использовал

function HTMLtoBBCode(text) {
    text = text.replace(/<b>/gi, "[b]");
    text = text.replace(/<\/b>/gi, "[/b]");
    text = text.replace(/<i>/gi, "[i]");
    text = text.replace(/<\/i>/gi, "[/i]");
    text = text.replace(/<u>/gi, "[u]");
    text = text.replace(/<\/u>/gi, "[/u]");
    text = text.replace(/<br>/gi, "\n\r");
    text = text.replace(/<br(.*?)\/>/gi, "\n\r");
    text = text.replace(/<img[^>]*?src="([^"]*?)"[^>]*?>/gi, "[img]$1[/img]");
    text = text.replace(/<font[^>]*?size="?([^">]*?)"?>((?:[\s\S](?!<font[^>]*?size))*?)<\/font>/gi, "[size=$1]$2[/size]");
    return text;
}

Решение:

text = text.replace(/<span style="font-size:(\d+)px">([\s\S]*?)<\/span>/gi, "[size=$1]$2[/size]");

Заранее спасибо.

  • 0
    может ли в промежутке быть другие стили внутри него, которые нужно поддерживать? то есть, что происходит, когда <span style="font-size:18px; color:blue;">
  • 0
    Интервал всегда будет таким, меняются только цифры. Я делаю пользовательский скрипт, у меня нет доступа к хосту.
Теги:
replace

1 ответ

0
Лучший ответ

Шаблон:

<span style="font-size:(\d+)px">(.+?)</span>

Замена:

[size=$1]$2[/size]

Это предполагает флаг ignoreCase.

  • 0
    Работает как шарм, у меня ушло некоторое время, чтобы понять, как его использовать, и мне пришлось внести в него изменения, но в конце это сработало, спасибо. (Решение добавлено в ОП)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню