Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果没有';t a'';在牢房里?_Javascript_Regex - Fatal编程技术网

Javascript 如果没有';t a'';在牢房里?

Javascript 如果没有';t a'';在牢房里?,javascript,regex,Javascript,Regex,我使用以下正则表达式将字符串的整个querystring替换为新的: "http://www.google.com?bar=1".replace(/\?.*/, "?foo=2") 仅当存在查询字符串时,此选项才有效。以下操作将不起作用: "http://www.google.com".replace(/\?.*/, "?foo=2") 如何使正则表达式匹配这两种情况?正则表达式对我没有用处。检查是否有?-如果没有附加查询字符串,则先删除旧的查询字符串。接吻 正则表达式对我来说没有用。检查是

我使用以下正则表达式将字符串的整个querystring替换为新的:

"http://www.google.com?bar=1".replace(/\?.*/, "?foo=2")
仅当存在查询字符串时,此选项才有效。以下操作将不起作用:

"http://www.google.com".replace(/\?.*/, "?foo=2")

如何使正则表达式匹配这两种情况?

正则表达式对我没有用处。检查是否有
-如果没有附加查询字符串,则先删除旧的查询字符串。接吻

正则表达式对我来说没有用。检查是否有
-如果没有附加查询字符串,则先删除旧的查询字符串。接吻

这应该行得通,但我不确定您到底想做什么,我记不起javascript中正则表达式的语法,所以replacestring是python语法的,但它应该给您一个想法。。当您执行“\?”时,您正在匹配一个被删除的“?”,因此它不会匹配第二个,因为字符串中没有“?”

/(.*?google.com)(.*?)/  

replacestring = '\\1'+'?foo=2'

这应该行得通,但我不确定您到底想做什么,我记不起javascript中正则表达式的语法,所以replacestring是python语法的,但它应该会告诉您这个想法。。当您执行“\?”时,您正在匹配一个被删除的“?”,因此它不会匹配第二个,因为字符串中没有“?”

/(.*?google.com)(.*?)/  

replacestring = '\\1'+'?foo=2'
说出或结束字符串:

说出或结束字符串:


避免在JS中操纵URL的字符串/正则表达式黑客攻击。每个浏览器都内置了一个非常好的URL解析器,您可以从任何链接元素访问它:

var a= document.createElement('a');
a.href= 'http://www.google.com/?bar=1';
a.search= '?foo=2';
alert(a.href); // http://www.google.com/?foo=2

避免在JS中操纵URL的字符串/正则表达式黑客攻击。每个浏览器都内置了一个非常好的URL解析器,您可以从任何链接元素访问它:

var a= document.createElement('a');
a.href= 'http://www.google.com/?bar=1';
a.search= '?foo=2';
alert(a.href); // http://www.google.com/?foo=2

捕获主机并用所需的查询字符串替换所有其他内容

url.replace(/([^?]+).*/, "$1?querystring");

捕获主机并用所需的查询字符串替换所有其他内容

url.replace(/([^?]+).*/, "$1?querystring");

这不会返回有效的结果。您需要更改javascript的语法,我不使用js正则表达式,但在所有语言中都是相同的,只是语法不同,正则表达式中的每个“()”都是要替换的区域,我的替换字符串是:“保持第一个()不变”并将第二个“()”替换为“?foo=2”。。。很抱歉,我无法提供更多的帮助来给出确切的语法,我只是现在没有时间研究它。我试图做的是,如果一个查询字符串不存在,则附加一个查询字符串,如果存在,则替换它。这似乎无法实现。这不会返回有效的结果。您需要更改javascript的语法,我不使用js正则表达式,但在所有语言中都是相同的,只是语法不同,正则表达式中的每个“()”都是要替换的一个区域,我的替换字符串是:“保持第一个()相同”,用“?foo=2”替换第二个“()”。。。很抱歉,我无法提供更多的帮助来给出确切的语法,我只是现在没有时间研究它。我试图做的是,如果一个查询字符串不存在,则附加一个查询字符串,如果存在,则替换它。这似乎没有达到目的。这是完美的,正是我想要的。在我看来,这比检查字符串是否有问号,然后在上面运行正则表达式要简单得多。这非常完美,也正是我想要的。在我看来,这比检查字符串中的问号然后在其上运行正则表达式要简单得多。