我已经在这上面花了几个小时,但我似乎无法弄清楚这一点。
在下面的代码中,我试图准确了解其中的正则表达式是什么以及如何url.match
工作。
由于代码如下,它不起作用。但是,如果我删除(?:&toggle=|&ie=utf-8|&FORM=|&aq=|&x=|&gwp)
它似乎会给我我想要的输出。
但是,我不想在不了解它在做什么的情况下删除它。
我找到了一个非常有用的资源,但几个小时后我仍然无法准确确定这些表达式在做什么:
有人可以为我分解一下并解释它是如何解析字符串的。表达式本身和括号的位置对我来说并不是很清楚,坦率地说非常令人困惑。
任何帮助表示赞赏。
(function($) {
$(document).ready(function() {
function parse_keywords(url){
var matches = url.match(/.*(?:\?p=|\?q=|&q=|\?s=)([a-zA-Z0-9 +]*)(?:&toggle=|&ie=utf-8|&FORM=|&aq=|&x=|&gwp)/);
return matches ? matches[1].split('+') : [];
}
myRefUrl = "http://www.google.com/url?sa=f&rct=j&url=https://www.mydomain.com/&q=my+keyword+from+google&ei=fUpnUaage8niAKeiICgCA&usg=AFQjCNFAlKg_w5pZzrhwopwgD12c_8z_23Q";
myk1 = (parse_keywords(myRefUrl));
kw="";
for (i=0;i<myk1.length;i++) {
if (i == (myk1.length - 1)) {
kw = kw + myk1[i];
}
else {
kw = kw + myk1[i] + '%20';
}
}
console.log (kw);
if (kw != null && kw != "" && kw != " " && kw != "%20") {
orighref = $('a#applynlink').attr('href');
$('a#applynlink').attr('href', orighref + '&scbi=' + kw);
}
});
})(jQuery);