Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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/9/java/352.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 - Fatal编程技术网

Javascript 替换查询字符串使用正则表达式仅返回第一个数组值?

Javascript 替换查询字符串使用正则表达式仅返回第一个数组值?,javascript,regex,Javascript,Regex,我的url具有如下参数值: Nr=AND(OR(abc:def),OR(ghi:jkl),OR(mno:pqr)...) 使用下面的正则表达式成功地提取了上面的查询字符串,但它只返回Ex的第一个数组值。只获取数组中的abc和def值 OR\(([^:]*):([^)]*)\) 我想将所有值提取为两个单独的数组值,如abc、ghi、mno和def、jkl、pqr 请在下面找到我的代码: var getNrValue = 'AND(OR(Analyzed:abc),OR(Compounds:de

我的url具有如下参数值:

Nr=AND(OR(abc:def),OR(ghi:jkl),OR(mno:pqr)...)
使用下面的正则表达式成功地提取了上面的查询字符串,但它只返回Ex的第一个数组值。只获取数组中的abc和def值

OR\(([^:]*):([^)]*)\)
我想将所有值提取为两个单独的数组值,如abc、ghi、mno和def、jkl、pqr

请在下面找到我的代码:

var getNrValue = 'AND(OR(Analyzed:abc),OR(Compounds:def),OR(Chemical:mno))';
var regex = /OR\(([^:]*):([^)]*)\)/gm;
var s = regex.exec(getNrValue);
console.log(s);

对此有何帮助?

您可以使用此正则表达式:

([^():]+):([^():]+)
在中,右侧窗格显示捕获组。还有一个问题

使用以下代码创建数组(请参见的输出):

var数组1=[];
var array2=[];
变量字符串='Nr=AND(或(abc:def),或(ghi:jkl),或(mno:pqr)…'
变量字符串='Nr=AND(或(abc:def),或(ghi:jkl),或(mno:pqr)…'
var myregex=/([^():]+):([^():]+)/g;
var thematch=myregex.exec(字符串);
while(匹配!=null){
//将其添加到捕获数组中
阵列1.推送(匹配[1]);
阵列2.推送(匹配[2]);
文件。书写(“左侧:”,匹配[1],“
”; 文件。书写(“右侧:”,匹配[2],“
”; //匹配下一个 match=myregex.exec(字符串); }
说明:

  • ([^():]+)
    将非括号
    ()
    或冒号
  • ([^():]+)
    将非括号
    ()
    或冒号
  • 代码检索组1和组2的匹配项,并将它们推送到两个数组上

如果您有问题,请告诉我。:)

向我们展示完整的代码只需让我知道我的查询参数是否有以下更改,如Nr=AND(或(abc:def,abc:aaa,abc:ddd),或(ghi:jkl,ghi:ggg,ghi:ghg),或(mno:pqr,mno:ppp,mno:qqq)。此处添加了其他值。。
var array1 = []; 
var array2 = []; 
var string = 'Nr=AND(OR(abc:def),OR(ghi:jkl),OR(mno:pqr)...)'
    var string = 'Nr=AND(OR(abc:def),OR(ghi:jkl),OR(mno:pqr)...)'
    var myregex = /([^():]+):([^():]+)/g;
    var thematch = myregex.exec(string);
    while (thematch != null) {
        // add it to array of captures
        array1.push(thematch[1]);
        array2.push(thematch[2]);
        document.write("left side: ",thematch[1],"<br />"); 
        document.write("right side: ",thematch[2],"<br />"); 
        // match the next one
        thematch = myregex.exec(string);
    }