Javascript替换了一个或另一个

Javascript替换了一个或另一个,javascript,replace,Javascript,Replace,我正在尝试使replace函数在有一个匹配项或另一个匹配项时工作。它的逻辑非常简单,所以我希望有一个非常简单的实现 我试过: var my_url = document.URL; var tmpl = "?tmpl=component" || "&tmpl=component"; //This is the tricky part location.href = my_url.replace(tmpl,""); …但它似乎不起作用。有什么想法吗?这不是JavaScript的工作方式,在

我正在尝试使
replace
函数在有一个匹配项或另一个匹配项时工作。它的逻辑非常简单,所以我希望有一个非常简单的实现

我试过:

var my_url = document.URL;
var tmpl = "?tmpl=component" || "&tmpl=component"; //This is the tricky part
location.href = my_url.replace(tmpl,"");

…但它似乎不起作用。有什么想法吗?

这不是JavaScript的工作方式,在这里是无用的。一种可能的方法是使用:


这里的
replace
方法将替换
tmpl=component
中以
&
开头的任何匹配项,这不是JavaScript的工作方式,在这里是无用的。一种可能的方法是使用:


在这里,
replace
方法将替换任何匹配的
tmpl=component
,从
&
开始,您可以进行两次替换:

location.href = my_url.replace("?tmpl=component", "").replace("&tmpl=component", "");
或者可以使用正则表达式:(推荐)


[?&]
将匹配一个“?”或“&”字符。

您可以进行两次替换:

location.href = my_url.replace("?tmpl=component", "").replace("&tmpl=component", "");
或者可以使用正则表达式:(推荐)


[?&]
将匹配“?”或“&”字符。

您正在将
tmpl
设置为表达式
“?tmpl=component”| |“&tmpl=component”的值,它将始终计算为
“?tmpl=component”
,因为它是or语句中的第一个真实值

您可以通过多种方式使用regex执行此操作:

my_url.replace(/?tmpl=component|&tmpl=component/, "");
my_url.replace(/[?&]tmpl=component/, "");

您正在将
tmpl
设置为表达式
“?tmpl=component”| |“&tmpl=component”的值,它将始终计算为
“?tmpl=component”
,因为它是or语句中的第一个真实值

您可以通过多种方式使用regex执行此操作:

my_url.replace(/?tmpl=component|&tmpl=component/, "");
my_url.replace(/[?&]tmpl=component/, "");
最好的是:

 var tmpl = (my_url.indexOf("?tmpl=component") > -1)? "?tmpl=component" : "&tmpl=component"; 
最好的是:

 var tmpl = (my_url.indexOf("?tmpl=component") > -1)? "?tmpl=component" : "&tmpl=component"; 

感谢您提供了不止一个答案!感谢您提供了不止一个答案!谢谢你给我解释。我认为逻辑OR在这种情况下是有效的。@otinanai不是问题。如果您不确定,有一些很好的用例可以根据条件表达式设置变量值;它们确实有助于避免错误。表达式
var val=myVal | |“0”
非常适合在未提供默认值的情况下设置默认值,或者只选择一系列潜在选项中的第一个真实值。我个人最喜欢的是
var val==myObj&&myObj.myVal
。由于JavaScript逻辑表达式短路,如果
myObj
为空/未定义,您将避免引用错误,并且仅当myObj存在时才会设置val。感谢您的解释。我认为逻辑OR在这种情况下是有效的。@otinanai不是问题。如果您不确定,有一些很好的用例可以根据条件表达式设置变量值;它们确实有助于避免错误。表达式
var val=myVal | |“0”
非常适合在未提供默认值的情况下设置默认值,或者只选择一系列潜在选项中的第一个真实值。我个人最喜欢的是
var val==myObj&&myObj.myVal
。因为JavaScript逻辑表达式短路,如果
myObj
为null/undefined,您将避免引用错误,并且仅当myObj存在时才会设置val。这是我的方法的正确方法,尽管我将使用regex方法。这是我的方法的正确方法,尽管我将使用regex方法。