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]");

提前致谢。

4

1 回答 1

0

图案:

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

替代品:

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

这假定了 ignoreCase 标志。

于 2013-11-11T21:18:00.373 回答