Javascript 处理或不处理引号的正则表达式模式

Javascript 处理或不处理引号的正则表达式模式,javascript,regex,bbcode,Javascript,Regex,Bbcode,我需要解析以下代码 [url=http://www.google.com]Google[/url] [url="http://www.google.com"]Google[/url] 我想做的是把两者都提取出来http://www.google.com 还有谷歌 现在,上面两段BBCode之间的区别是第二段BBCode中url周围的引号 一个正则表达式代码是否可以提取我的数据点并解释引号的存在或取消 谢谢 编辑:只是为了进一步澄清。我目前正在使用以下正则表达式模式: /\[URL=\"?([\s

我需要解析以下代码

[url=http://www.google.com]Google[/url] [url="http://www.google.com"]Google[/url] 我想做的是把两者都提取出来http://www.google.com 还有谷歌

现在,上面两段BBCode之间的区别是第二段BBCode中url周围的引号

一个正则表达式代码是否可以提取我的数据点并解释引号的存在或取消

谢谢

编辑:只是为了进一步澄清。我目前正在使用以下正则表达式模式:

/\[URL=\"?([\s\S]*?)\"?\]([\s\S]*?)\[\/URL\]/gi 如果URL是否用引号括起来,这将成功匹配URL。然而,我希望最终的结果是剥离所有引用。通过实际的正则表达式模式本身,如果引号甚至在匹配中,是否可以不包含引号

是:

/\[url=("?)(http://www\.google\.com)\1\](Google)\[\/url\]/
将捕获“”或;'http://www.google.com'; 还有“谷歌”

我知道您实际上不需要捕获“”或,但这就是正则表达式如何设法要求双引号要么都存在,要么都不存在。我还意识到,除了您的示例之外,您可能还需要介绍其他链接目标和链接文本,但我假设您已经知道如何处理这些问题,并且只是询问可选双引号的问题?

是:

/\[url=("?)(http://www\.google\.com)\1\](Google)\[\/url\]/
将捕获“”或;'http://www.google.com'; 还有“谷歌”


我知道您实际上不需要捕获“”或,但这就是正则表达式如何设法要求双引号要么都存在,要么都不存在。我还意识到,除了您的示例之外,您可能还需要涵盖其他链接目标和链接文本,但我假设您已经知道如何处理这些问题,并且只是询问可选双引号的问题?

为了更一般,您可以这样做:

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

这将为您提供\1中的URL和\2中的标签。为了使其更通用,您可以执行以下操作:

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

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

Yes。你想让正则表达式做什么?创建一个元素?还有别的吗?并且。您想要的是可能的,但是在s///g之前去掉所有引号更有效;对你想让正则表达式做什么?创建一个元素?还有别的吗?并且。您想要的是可能的,但是在s///g之前去掉所有引号更有效;你是对的,我可以处理实际的url部分,如果url有引号或没有引号,我只需要正则表达式来匹配模式,但是如果它有引号,它应该放弃引号。但是您的模式将匹配引号或不匹配引号,但是如果有引号,它实际上不会丢弃quotes@Mark例如我不知道你的意思。第二个捕获组将不包括引号。一个正则表达式实际上不能丢弃任何东西。我猜discard这个词是不正确的,我的意思是说“不要在最后一场比赛中包含引号,***,如果他们在那里的话”。@Mark:那么,这个正则表达式确实丢弃了引号:第二个捕获组就是”http://www.google.com'不是'http://www.google.com’。所以我现在使用最后一种模式/[URL=?[\s\s]*?\1][\s\s]*?[\/URL]/gi,它仍然包括第二个捕获组中的。可能是javascript问题…?你是对的,我可以处理实际的url部分,如果url有引号或没有引号,我只需要正则表达式来匹配模式,但是如果它有引号,它应该放弃引号。但是您的模式将匹配引号或不匹配引号,但是如果有引号,它实际上不会丢弃quotes@Mark例如我不知道你的意思。第二个捕获组将不包括引号。一个正则表达式实际上不能丢弃任何东西。我猜discard这个词是不正确的,我的意思是说“不要在最后一场比赛中包含引号,***,如果他们在那里的话”。@Mark:那么,这个正则表达式确实丢弃了引号:第二个捕获组就是”http://www.google.com'不是'http://www.google.com’。所以我现在使用最后一种模式/[URL=?[\s\s]*?\1][\s\s]*?[\/URL]/gi,它仍然包括第二个捕获组中的。可能是javascript问题。。。?