Javascript 如何从长字符串中提取多个子字符串
我有一个长字符串,如下所示:Javascript 如何从长字符串中提取多个子字符串,javascript,jquery,regex,Javascript,Jquery,Regex,我有一个长字符串,如下所示: var tStr = "googletag.defineSlot('Lorem1', [300, 100], 'div-ad-1430201576110-0'); googletag.defineSlot('Lorem2', [300, 100], 'div-ad-1442774220958-0'); googletag.defineSlot('Lorem3', [300, 100], 'div-ad-1448024965037-0'); googletag.def
var tStr = "googletag.defineSlot('Lorem1', [300, 100], 'div-ad-1430201576110-0');
googletag.defineSlot('Lorem2', [300, 100], 'div-ad-1442774220958-0');
googletag.defineSlot('Lorem3', [300, 100], 'div-ad-1448024965037-0');
googletag.defineSlot('Lorem4', [290, 60], 'div-ad-1429688274462-0');
googletag.defineSlot('Lorem5', [300, 200], 'div-ad-1448279284710-0');
googletag.defineSlot('Lorem6', [728, 90], 'div-ad-1389610933954-2');
googletag.defineSlot('Lorem7', [728, 90], 'div-ad-1389610933954-4');
googletag.defineSlot('Lorem8', [300, 250], 'div-ad-1389610933954-0');
googletag.defineSlot('Lorem9', [300, 250], 'div-ad-1448278717664-0');
googletag.defineSlot('Lorem10',[300, 250] 'div-ad-1425381569546-1');
googletag.defineOutOfPageSlot('Lorem11','div-ad-1424524422308-0-oop1');
googletag.defineOutOfPageSlot('Lorem12','div-ad-1424524422308-0-oop2');
googletag.defineOutOfPageSlot('Lorem13','div-ad-1389610933954-0-oop4');
googletag.defineOutOfPageSlot('Lorem14','div-ad-1389610933954-0-oop5');
googletag.defineOutOfPageSlot('Lorem15','div-ad-1389610933954-0-oop6');";
从这个字符串中,我需要获取googletag.defineSlot()中传递的所有最后一个元素。
例如,对于上面的字符串,我需要得到一个数组,它应该有['div-ad-1430201576110-0','div-ad-1442774220958-0','div-ad-1448024965037-0','div-ad-1429688274462-0','div-ad-1448279284710-0','div-ad-138910933954-2','div-ad-1389610933954-4','div-ad-1448278717664-0','div-ad-538146'>
所以我试着说:
var myregexp = /googletag.defineSlot+/g;
var match = myregexp.exec(x);
console.log(match);
但我知道正则表达式模式是错误的。我正在寻找的正确方法或模式
提前谢谢你试试这个
var res = tStr.split(" ");
您可以使用以下选项:
var myregexp = /googletag\.defineSlot.*?'(div-ad[^']+)'/g;
var myregexp = /googletag\.defineSlot.*?'([^']+)'\);/
对于变量字符串,可以使用以下命令:
var myregexp = /googletag\.defineSlot.*?'(div-ad[^']+)'/g;
var myregexp = /googletag\.defineSlot.*?'([^']+)'\);/
请参见您应该使用.split
var tStr = "googletag.defineSlot('Lorem1', [300, 100], 'div-ad-1430201576110-0');
googletag.defineSlot('Lorem2', [300, 100], 'div-ad-1442774220958-0');
googletag.defineSlot('Lorem3', [300, 100], 'div-ad-1448024965037-0');
googletag.defineSlot('Lorem4', [290, 60], 'div-ad-1429688274462-0');
googletag.defineSlot('Lorem5', [300, 200], 'div-ad-1448279284710-0');
googletag.defineSlot('Lorem6', [728, 90], 'div-ad-1389610933954-2');
googletag.defineSlot('Lorem7', [728, 90], 'div-ad-1389610933954-4');
googletag.defineSlot('Lorem8', [300, 250], 'div-ad-1389610933954-0');
googletag.defineSlot('Lorem9', [300, 250], 'div-ad-1448278717664-0');
googletag.defineSlot('Lorem10',[300, 250] 'div-ad-1425381569546-1');
googletag.defineOutOfPageSlot('Lorem11','div-ad-1424524422308-0-oop1');
googletag.defineOutOfPageSlot('Lorem12','div-ad-1424524422308-0-oop2');
googletag.defineOutOfPageSlot('Lorem13','div-ad-1389610933954-0-oop4');
googletag.defineOutOfPageSlot('Lorem14','div-ad-1389610933954-0-oop5');
googletag.defineOutOfPageSlot('Lorem15','div-ad-1389610933954-0-oop6');";
var arr = tStr.split("');");
var param = [];
[].forEach.call(arr, function(inst){
var p = inst.split(", '");
param.push(p[p.length-1]);
})
// Now p is the array you want
假设您可以依赖上一个“…”
中的div
或div ad
,下面是您可以使用的代码和正则表达式:
/googletag\.defineSlot.*?'(div[^']*)'/g
见
它匹配:
googletag\.defineSlot
-字面上匹配googletag.defineSlot
*?
-一种惰性点匹配结构(这里使用它很好,因为字符串很短),它尽可能少地匹配除换行符以外的任何字符
”
-单撇号
(div[^']*)
-捕获组1匹配的div
,后跟除以外的任何字符。
”
-一个文本”
如果在单引号内的最后一个参数中可以有任何值,请使用
googletag\.defineSlot.*?'([^']*)'\);
看
var re=/googletag\.defineSlot.*?'([^']*)\)/G
var str='googletag.defineSlot(\'Lorem1\',[300100],\'div-ad-1430201576110-0\')\ngoogletag.defineSlot(\'Lorem2\',[300100],\'div-ad-1442774220958-0\')\ngoogletag.定义批次(\'Lorem3\',[300100],\'div-ad-1448024965037-0\')\ngoogletag.defineSlot(\'Lorem4\',[290,60],\'div-ad-1429688274462-0\')\ngoogletag.defineSlot(\'Lorem5\',[300200],\'div-ad-1448279284710-0\')\ngoogletag.defineSlot(\'Lorem6\',[728,90],\'div-ad-1389610933954-2\')\ngoogletag.defineSlot(\'Lorem7\',[728,90],\'div-ad-1389610933954-4\')\ngoogletag.defineSlot(\'Lorem8\',[300250],\'div-ad-1389610933954-0\')\ngoogletag.defineSlot(\'Lorem9\',[300250],\'div-ad-1448278717664-0\')\ngoogletag.defineSlot(\'Lorem10\',[300250]\'div-ad-1425381569546-1\')\ngoogletag.defineoutopageslot(\'Lorem11\',\'div-ad-1424524422308-0-oop1\')\ngoogletag.defineoutopageslot(\'Lorem12\',\'div-ad-1424524422308-0-oop2\')\ngoogletag.defineoutopageslot(\'Lorem13\',\'div-ad-1389610933954-0-oop4\')\ngoogletag.defineoutopageslot(\'Lorem14\',\'div-ad-1389610933954-0-oop5\')\ngoogletag.defineoutopageslot(\'Lorem15\',\'div-ad-1389610933954-0-oop6\');
var-m;
var-ar=[];
while((m=re.exec(str))!==null){
ar.push(m[1]);
}
document.getElementById('result').innerHTML=JSON.stringify(ar,0,4)代码>
并且字符串可能是动态的,可以change@Tushar:我知道还有另一种方法,我刚刚添加了另一个正则表达式解决方案。这个问题只是有点不清楚,所以我试图涵盖所有的可能性。