我创建了正则表达式来削减源代码的一部分。
/SRC_START\n([\s\S]*?)\n\/\/SRC_END/i
我在regex101.com where it appears to work上测试了它。
但它在我的控制台中不起作用:
"ddd\
//SRC_START\
function bounce(objectA, objectB) {} \
\
//SRC_END\
return bounce;\
})".match(/SRC_START\n([\s\S]*?)\n\/\/SRC_END/i)
正如您所看到的,我逐字复制了myregex101片段中的数据。我得到的结果是null
。
答案 0 :(得分:2)
您的输入字符串与regex101上的输入字符串不同。
将您的输入声明为:
var str = 'ddd\n//SRC_START\n function bounce(objectA, objectB) {} \n\n//SRC_END\n return bounce;\n})\n';
然后这样做:
var re = /SRC_START\n([\s\S]*?)\n\/\/SRC_END/i;
var m = str.match(re);
将给出这个匹配数组:
["SRC_START
function bounce(objectA, objectB) {}
//SRC_END", " function bounce(objectA, objectB) {}
"]
在控制台中执行内联操作:
"ddd\n\
//SRC_START\n\
function bounce(objectA, objectB) {}\n \
\
//SRC_END\n\
return bounce;\n\
})".match(/SRC_START\n([\s\S]*?)\n\s*\/\/SRC_END/i)
答案 1 :(得分:0)
在正则表达式上使用template literals和多行m
标记。
var matches = `ddd
//SRC_START
function bounce(objectA, objectB) {}
//SRC_END
return bounce;
})`.match(/SRC_START\n([\s\S]*?)\n\/\/SRC_END/im);
console.log(matches);
document.body.innerHTML = '<pre>' + JSON.stringify(matches, 0, 4) + '</pre>';
&#13;
答案 2 :(得分:0)
我看到你的代码存在的问题是源字符串没有被正确转义。
// the src must be properly escaped
var src = "ddd\n"+
"//SRC_START\n"+
" function bounce(objectA, objectB) {} \n"+
"\n"+
"//SRC_END\n"+
" return bounce;\n"+
"})\n"+
"";
var match = src.match(/SRC_START\n([\s\S]*?)\n\/\/SRC_END/i);
alert("WHOLE MATCH:\n" + match[0] + "\n\nCAPTURED GROUP:\n" + match[1]);
&#13;