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
Javascript 将除第一个以外的所有“?”替换为“&”_Javascript_Regex_Replace - Fatal编程技术网

Javascript 将除第一个以外的所有“?”替换为“&”

Javascript 将除第一个以外的所有“?”替换为“&”,javascript,regex,replace,Javascript,Regex,Replace,我想把所有的“?”替换为“&”,除了第一个替换为javascript。我找到了一些正则表达式,但它们不起作用。 我有点像: home/?a=1 home/?a=1?b=2 home/?a=1?b=2?c=3 我想: home/?a=1 home/?a=1&b=2 home/?a=1&b=2&c=3 有人知道我该怎么做吗? 谢谢 你能把它分成几份吗?然后重新包装阵列: var string = "home/?a=1?b=2"; var str = string.spli

我想把所有的“?”替换为“&”,除了第一个替换为javascript。我找到了一些正则表达式,但它们不起作用。 我有点像:

home/?a=1
home/?a=1?b=2
home/?a=1?b=2?c=3
我想:

home/?a=1
home/?a=1&b=2
home/?a=1&b=2&c=3
有人知道我该怎么做吗?
谢谢

你能把它分成几份吗?然后重新包装阵列:

var string = "home/?a=1?b=2";
var str = string.split('?');

var new = str[0] + '?'; // text before first '?' and first '?'

for( var x = 1; x < str.length; x++ ) {
    new = new + str[x];
    if( x != ( str.length - 1 ) ) new = new + '&'; //to avoid place a '&' after the string
}

我认为使用正则表达式是不可能的,但您可以拆分字符串,然后将其重新连接在一起,手动替换第一个出现的字符串:

var split='home/?a=1?b=2'。split'?';//['home/','a=1','b=2'] 替换变量=split[0]+'?'+split.slice1.join'&'/'home/?a=1&b=2' 控制台被更换 您可以在正则表达式中使用/[^\/]\?/作为匹配任何?不在/character后面的字符

var str = str.replace(/([^\/])\?/g, "$1&");
var str=home/?a=1\nhome/?a=1?b=2\nhome/?a=1?b=2?c=3\n.replace/[^\/]\?/g,$1&;
console.logstr 您可以使用一个否定的[^?]+从字符串的开头匹配一个问号,然后匹配一个问号,并在第一个捕获组中捕获该问号。在第二个捕获组中,捕获字符串的其余部分

使用并传递一个函数作为第二个参数,其中返回第一个捕获组,然后返回第二个捕获组,其中所有问号都替换为&

设字符串=[ 主页/?a=1, 主页/?a=1?b=2, 主页/?a=1?b=2?c=3 ]; strings.forEachstr=>{ 让result=str.replace/^[^?]+\?.*/,functionmatch,group1,group2{ 返回group1+group2。替换/\?/g'&' }; console.logresult;
};输入的形式是什么?你有一个只有一条路径的字符串吗?是否有每行都有路径的文本文件?是否确实要更改当前页面的URL?请详细说明。对于那些被重复投票的人:你认为哪些答案是有用的?选中的答案是不相关的,其他答案分配的太多。@AdamMillerchip我是用正则表达式做的,请看下面的答案,这是正则表达式的意思:POh,我以为点击“重新打开”会让它进行投票,而不是立即重新打开它,对不起!尽管如此,我认为应该重新考虑复制,它们几乎没有共同点。Javascript不理解lookbehind。@Toto问题修复程序可以工作。但我会给你我的投票当OP会说怎么处理家?a=1?b=1@Toto对,但这是这个结构字符串的答案。若结构发生了变化,用户应该在问题中提到结构发生了变化,或者可能会改变或使用与之匹配的答案。