为网址调整此正则表达式

时间:2012-11-28 01:40:04

标签: php regex

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

我现在有这个网址:

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

这只会让网址已经包含在''中,我怎样才能检查网址是否包含单引号?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您可以使用此正则表达式:

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

它接受单引号,双引号和没有引号分隔的url值。缺点是您必须检查多个捕获组以获取URL属性值。

以下是捕获组:

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

如果您不允许在网址标记之间显示方括号,则可以使用以下正则表达式。在这种情况下,它会更快地找到匹配。

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