我正在研究使用JQuery Markitup的功能!编辑器作为BBCODE编辑器。我只允许一小部分的bbcodes,包括以下内容:

[b]
[i]
[quote]
[quote=Mr Incredible]
[img]
[url]
[youtube]

我有一个使用编辑器的1,500个字符“描述”字段,但我也打算存储150个字符 消化 所有bbcode删除的描述。

我目前正在使用一个简单的正则表达式来在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()函数以实现这一目标?

编辑

David在第一个答案中的建议是正确的。

这是我现在正在使用的:

 string r = Regex.Replace(s,
    @"\[youtube\].*\[\/youtube\]",
    String.Empty, RegexOptions.IgnoreCase);

 r = Regex.Replace(r,
    @"\[img\].*\[\/img\]",
    String.Empty, RegexOptions.IgnoreCase);
有帮助吗?

解决方案

您有几个要删除内容的标签,其余的只需要删除标签。

替换 [img].*[/img] 使用string.empty和 [youtube].*[/youtube], ,以及您需要删除的内容的其他方法,然后删除 [.*].

编辑:

我也不是正则专家,但我认为 @"\[img\].*?\[/img\]" 就是你想要的。我认为您不需要括号 @"\[(.*?)\]", ,我认为在这种情况下,括号意味着保存匹配的文本,以便您可以再次与之匹配 \1.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top