我有一个正则表达式可以捕获三个反向引用,尽管一个(第二个)可能是null
.
给定流动的字符串:
http://www.google.co.uk/url?sa=t&rct=j&q=site%3Ajonathonoat.es&source=web&cd=1&ved=0CC8QFjAA&url=http%3A%2F%2Fjonathonoat.es%2Fbritish-mozcast%2F&ei=MQj9UKejDYeS0QWruIHgDA&usg=AFQjCNHy1cDoWlIAwyj76wjiM6f2Rpd74w&bvm=bv.41248874,d.d2k,.co.uk,site%3Ajonathonoat.es&source=web,1
我希望捕获 TLD(在本例中为 .co.uk)、q
param 和cd
param。
我正在使用以下正则表达式:
/.*\.google([a-z\.]*).*q=(.*[^&])?.*cd=(\d*).*/i
除了第二个反向引用之外,哪个有效,包括直到参数的其他参数cd
,我目前得到这个:
["http://www.google.co.uk/url?sa=t&rct=j&q=site%3Ajo…,d.d2k,.co.uk,site%3Ajonathonoat.es&source=web,1 ", ".co.uk", "site%3Ajonathonoat.es&source=web", "1", index: 0, input: "http://www.google.co.uk/url?sa=t&rct=j&q=site%3Ajo…,d.d2k,.co.uk,site%3Ajonathonoat.es&source=web,1"]
第一个反向引用是正确的,.co.uk
第三个也是正确的;它是1
。在本例中,我希望第二个反向引用为空(或未定义或其他)或只是q
参数site%3Ajonathonoat.es
。它目前source
也包含参数 ( site%3Ajonathonoat.es&source=web
)。
任何帮助将不胜感激,谢谢!
我已经添加了代码的 JSFiddle,在浏览器控制台中查看输出,谢谢!