我正在开发一个使用 JQuery MarkItUp 的功能!编辑器作为 BBCode 编辑器。我只允许 BBCode 的一小部分,包括以下内容:
[b]
[i]
[quote]
[quote=Mr Incredible]
[img]
[url]
[youtube]
我有一个使用编辑器的 1,500 个字符的“描述”字段,但我还计划存储一个 150 个字符的描述摘要,并去掉所有 BBCode。
我目前正在使用一个简单的 RegEx 在 C# 中执行此操作。它基本上将嵌入的 BBCodes 核对到一个字符串中,但它留下了很多“嘈杂的内容”,比如我也想从摘要中删除的 [img] URL 或 [youtube] 视频 ID。
这是我当前的正则表达式:
public static String StripBBCode(string bbCode)
{
string r = Regex.Replace(bbCode,
@"\[(.*?)\]",
String.Empty, RegexOptions.IgnoreCase);
// Finally, replace all newlines with a space
r = Regex.Replace(r,
@"(\r\n|\n\r|\r|\n)+",
@" ", RegexOptions.IgnoreCase);
return r;
}
如果我通过这个函数运行以下字符串,我会得到如下所示的结果:
来源
This is [b]bold[/b]. This is [i]italic[/i].
Here is an image:
[img]http://www.phatmac.com/Pics/Movies/Incredibles.jpg[/img]
Here is a link to [url=http://espn.go.com]ESPN[/url].
Here is a YouTube video:
[youtube]WJ0UkZ3W4FA[/youtube]
结果
这是大胆的。这是斜体。这是一张图片:http ://www.phatmac.com/Pics/Movies/Incredibles.jpg这是 ESPN 的链接。这是一个 YouTube 视频:WJ0UkZ3W4FA
这就是我想要回来的
这是大胆的。这是斜体。这是一张图片:这是 ESPN 的链接。这是一个 YouTube 视频:
如何修改我的 StripBBCode() 函数来实现这一点?
已编辑
下面大卫在第一个答案中的建议是正确的。
这是我现在使用的:
string r = Regex.Replace(s,
@"\[youtube\].*\[\/youtube\]",
String.Empty, RegexOptions.IgnoreCase);
r = Regex.Replace(r,
@"\[img\].*\[\/img\]",
String.Empty, RegexOptions.IgnoreCase);