REGEX模式处理或不处理引号

时间:2012-03-09 23:45:32

标签: javascript regex bbcode

我有以下需要解析的BBCode

[url=http://www.google.com]Google[/url]
[url="http://www.google.com"]Google[/url]

我要做的是提取 http://www.google.com Google

现在上面两个BBCode之间的差异是第二个BBCode中网址的引号。

单个正则表达式代码是否有可能提取我的数据点并说明引号的存在或不存在?

谢谢!

编辑:仅供进一步澄清。我目前正在使用以下正则表达式模式:

/\[URL=\"?([\s\S]*?)\"?\]([\s\S]*?)\[\/URL\]/gi

如果URL包含在引号中,则会成功匹配该URL。但是,我希望最终结果能够被删除所有引号。这是否可以通过实际的正则表达式模式本身来简单地不包括匹配中的引号(如果引号甚至在那里)

2 个答案:

答案 0 :(得分:2)

是:

/\[url=("?)(http://www\.google\.com)\1\](Google)\[\/url\]/

将捕获'"'''; 'http://www.google.com';和'Google'

(我意识到你实际上并不需要捕获'"''',但这就是正则表达式设法要求双引号要么都存在要么两者都不存在.I还意识到你可能需要覆盖除你的例子之外的其他链接目标和链接文本,但我假设你已经知道如何处理它,并且只是询问可选双引号的问题?)< / p>

答案 1 :(得分:2)

为了使它更通用,你会做这样的事情:

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

将为您提供\ 1中的URL和\ 2

中的标签