Javascript 替换查询字符串使用正则表达式仅返回第一个数组值?
我的url具有如下参数值: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
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);
}