我有一个长字符串,如下所示:
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-1389610933954-2','div-ad-1389610933954-4','div-ad-1448278717664-0','div-ad-1425381569546-1']
所以我想尝试类似的事情:
var myregexp = /googletag.defineSlot+/g;
var match = myregexp.exec(x);
console.log(match);
但我知道正则表达式是错误的。我正在寻找的正确方法或模式。
提前致谢
答案 0 :(得分:2)
您可以使用以下内容:
var myregexp = /googletag\.defineSlot.*?'(div-ad[^']+)'/g;
对于变量String,您可以使用以下内容:
var myregexp = /googletag\.defineSlot.*?'([^']+)'\);/
请参阅DEMO
答案 1 :(得分:2)
假设您可以依赖上一个div
中的div-ad
或'...'
,以下是您可以使用的代码和正则表达式:
/googletag\.defineSlot.*?'(div[^']*)'/g
请参阅regex demo
匹配:
googletag\.defineSlot
- 字面上匹配googletag.defineSlot
.*?
- 一个懒点匹配构造(这里很好用,因为字符串很短)尽可能少地匹配除换行符之外的任何字符'
- 单撇号(div[^']*)
- 捕获与div
匹配的第1组,后跟任何字符,但'
'
- 文字'
。如果您可以在单引号中的最后一个参数中包含任何值,请使用
googletag\.defineSlot.*?'([^']*)'\);
请参阅another demo
var re = /googletag\.defineSlot.*?'([^']*)'\);/g;
var str = 'googletag.defineSlot(\'Lorem1\', [300, 100], \'div-ad-1430201576110-0\');\ngoogletag.defineSlot(\'Lorem2\', [300, 100], \'div-ad-1442774220958-0\');\ngoogletag.defineSlot(\'Lorem3\', [300, 100], \'div-ad-1448024965037-0\');\ngoogletag.defineSlot(\'Lorem4\', [290, 60], \'div-ad-1429688274462-0\');\ngoogletag.defineSlot(\'Lorem5\', [300, 200], \'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\', [300, 250], \'div-ad-1389610933954-0\');\ngoogletag.defineSlot(\'Lorem9\', [300, 250], \'div-ad-1448278717664-0\');\ngoogletag.defineSlot(\'Lorem10\',[300, 250] \'div-ad-1425381569546-1\');\ngoogletag.defineOutOfPageSlot(\'Lorem11\',\'div-ad-1424524422308-0-oop1\');\ngoogletag.defineOutOfPageSlot(\'Lorem12\',\'div-ad-1424524422308-0-oop2\');\ngoogletag.defineOutOfPageSlot(\'Lorem13\',\'div-ad-1389610933954-0-oop4\');\ngoogletag.defineOutOfPageSlot(\'Lorem14\',\'div-ad-1389610933954-0-oop5\');\ngoogletag.defineOutOfPageSlot(\'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);

<pre id="result"></pre>
&#13;
答案 2 :(得分:0)
试试这个..
var res = tStr.split(" ");
答案 3 :(得分:0)
您应该使用.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