它是练习的一部分,任务是:
http://www.google.com?ID=111
变为http://www.google.com?ID=222
我的代码错了,对建议感到高兴!
var first = "http://www.google.com?ID=111";
var second = "ID=222";
function searching(){
var update="";
if (arguments[0]==/^\w+@\w+\.com$/i){
return arguments[0]+"?"+arguments[1];
}
else {
update=arguments[0].match(/(\w+@\w+\.com) \?\w+\d/i);
}
return update + "?" +arguments[1];
}
searching(first, second);
答案 0 :(得分:1)
您不能只将字符串与正则表达式与==
进行比较。基本上你的选择是match, test, replace, and split。当你想要一个\w
时,你的正则表达式有一个w
,应该是:/www\.\w+\.com$/i
- 我只是进一步缩短它。在javascript中testing for valid URL时,有一百万种正则表达式验证。一般来说,我认为,你应该为你的用例构建一个“足够好”的正则表达式:这里我们只关心查询参数是否存在:
var first = "http://www.google.com?ID=111";
var second = "ID=222";
function searching(){
var update="";
if (/^.*\.com$/i.test(arguments[0])){
//pattern just checks end of string to see if query param is present.
return arguments[0]+"?"+arguments[1];
}
else {
update=arguments[0].replace(/ID=\d+/, second); //
}
return update;
}
searching(first, second);
答案 1 :(得分:0)
您可以检查?
以及第一个参数是否包含符号'?'然后使用.split('?')[0]
获取第一部分(url)并添加第二个参数arguments[1]
,否则只需将第二个参数直接添加到第一个参数(url):
function searching()
{
if (arguments[0].indexOf('?')!=-1)
return arguments[0].split('?')[0]+"?"+arguments[1];
else
return arguments[0]+"?"+arguments[1];
}
希望这有帮助。