0

大家好,试图将我的正则表达式排序为 bbcodes。

我现在有这个网址:

 "/\[url\=\'(.+?)\'\](.+?)\[\/url\]/is",

那只会得到已经包含在''中的url,我怎样才能让它检查带有和不带单引号的url?

4

2 回答 2

1

你可以使用这个正则表达式:

\[url=(?:'([^']+)'|"([^"]+)")\](.+?)\[\/url\]

它接受单引号、双引号和无引号分隔的 url 值。缺点是您必须检查多个捕获组才能获取 URL 属性值。

以下是捕获组:

  • 第 1 组:如果属性是单引号分隔的,则找到的值。
  • 第 2 组:如果属性是双引号分隔的,则找到的值。
  • 第 3 组:URL 标记之间的文本。

如果您不允许方括号出现在 URL 标记之间,则可以改用以下正则表达式。在这种情况下,它将更快地找到匹配项。

\[url=(?:'([^']+)'|"([^"]+)")\]([^\[]+)\[\/url\]
于 2012-11-28T02:49:43.407 回答
1

您可以使用交替的模式,即使用竖线 (|) 的结构。

"/\[url\=(\'(.+?)\'|([^'].+?))\](.+?)\[\/url\]/is",
于 2012-11-28T01:42:43.200 回答