Regex Reg Exp:多个带空格的单词(%20)

Regex Reg Exp:多个带空格的单词(%20),regex,Regex,我正在尝试从谷歌广告中获取用于访问我的网站的关键词。我基本上都能用,只是我不知道如何让它读取多个关键词 下面是一个可单击的示例URL: http://www.example.com/?ccampaign=hydraulic_repair&keyword=hard%20chrome%20plating 它显示在URL栏中,如下所示(没有%20,只有一个空格) 在我的JS中,该警报仅警报“硬”而非“硬镀铬” 我尝试过添加一个“”(空格)、使用\s和添加%20的多种变体,但所有这些似乎都

我正在尝试从谷歌广告中获取用于访问我的网站的关键词。我基本上都能用,只是我不知道如何让它读取多个关键词


下面是一个可单击的示例URL:

http://www.example.com/?ccampaign=hydraulic_repair&keyword=hard%20chrome%20plating
它显示在URL栏中,如下所示(没有%20,只有一个空格)

在我的JS中,该警报仅警报“硬”而非“硬镀铬”


我尝试过添加一个“”(空格)、使用\s和添加%20的多种变体,但所有这些似乎都是为了提醒“h”或“hard”


对我遗漏的东西有什么建议吗?使用RegEx--

不太好捕获
关键字
值的模式可能是“后跟参数分隔符(
&
)或字符串结尾(
$
)”:


演示:

控制台日志
location.href
。这是怎么一回事?
Google广告是否与你的问题相关,似乎你只是想用JS来提取数据。这可能是我在上面的问题中发布的URL。我用example.com替换了live站点。是的,我只是想用JS从URL中提取数据。在问题中,你发布了2个URL。记录
%20
或空格时是什么?(我不经常使用JS,不确定它是否会自动解码URL)。根据它是什么,请显示您在正则表达式中使用的空格或
%20
。正如我试图解释的那样。第一个链接是您将要单击的链接(谷歌广告,其中包括%20),当它将您带到我的网站时,第二个URL是出现在URL栏中的链接(%20已消失并替换为空格)。是否有一种方法可以说明空间和%20以涵盖这两种情况?这取决于您使用的浏览器,一些漂亮的打印URL编码。例如,chrome中显示的
fün
实际上是,
f%C3%BCn
。也许你想要的是。谢谢德米特里!!这会提醒“hard%20chrome%20plating”,我可以使用它:)使用decodeURI(URLkeyword)删除%20,如果有人阅读此内容感到疑惑。@chris85:我不建议在正则表达式模式匹配之前使用
decodeURI(location.href)
,因为它可能会破坏匹配。例如,如果解码值中出现unescaped
&
,则此答案中的正则表达式将失败。如果解码的值会显示某些字符,其他正则表达式也可能会失败。@DmitryEgorov-你是说
*?
不匹配
&
?@sln如果关键字包含该字符并被解码,
*?
将在
&
处停止。我没有想到
&
是url编码的。
http://www.example.com/?ccampaign=hydraulic_repair&keyword=hard chrome plating
var URLkeyword = location.href.match(/keyword=([a-zA-Z0-9_\-]+)/)
alert(URLkeyword);
keyword=(.*?)(?:&|$)