在JavaScript中,我试图匹配以下所有出现的
initChart('something');
initMap('another');
initChart();
initMap();
除非前面有'function'一词,意思是,不匹配
function initChart(param) { ... }
function initMap(param) { ... }
基本上我需要去掉所有调用函数的事件,同时保留函数定义。我到目前为止
/init.*(.*)/i
这就是我的脚本剥离匹配的原因:
var scriptRegex = /init.*(.*)/i;
while (scriptRegex.test(responseHTML)) {
responseHTML = responseHTML.replace(scriptRegex, "");
}
但我坚持如何告诉它“只有在它之前没有'功能'这个词
答案 0 :(得分:1)
问题是Javascript正则表达式没有lookbehind功能,所以你不能测试是否有"功能"关键字之前只有正则表达式。 (并且大多数情况下,当此功能可用时,lookbehind内的子模式必须具有固定宽度,这意味着您无法测试函数名称与" function"具有未知空格数的关键字。)
所以你需要一个解决方法。例如,您可以使用捕获组来了解此类模式之前是否存在关键字函数:
/\b(?:(function)\s+)?(init\w*)\s*\(/
如果第一个捕获组包含"功能"你可以排除比赛。