javascript - 正则表达式:如果前面没有单词,则匹配短语

标签 javascript regex regular-language

在 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, "");
}

但我不知道如何告诉它“只有当它前面没有“函数”一词时

最佳答案

问题在于Javascript正则表达式没有lookbehind功能,因此您无法仅使用正则表达式来测试前面是否存在“function”关键字。 (大多数情况下,当此功能可用时,lookbehind 内的子模式必须具有固定宽度,这意味着您无法测试函数名称与“function”关键字用未知数量的空格。)

所以你需要一个解决方法。例如,您可以使用捕获组来了解之前是否存在具有这种模式的关键字函数:

/\b(?:(function)\s+)?(init\w*)\s*\(/

如果第一个捕获组包含“function”,您可以排除匹配。

关于javascript - 正则表达式:如果前面没有单词,则匹配短语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41602150/

相关文章:

javascript - 如何从 javascript 对象获取与特定 ID 匹配的项目

javascript - 用 JPlayer 克服音频播放问题?

javascript - react .js : Avoid updates of currently edited input

regex - 在 PowerShell 字符串中的 32 个字符 + 空格后返回新行

regex - 将正则表达式转换为常规语法/右线性语法

javascript - Table .append() 同时发生

php - WordPress 中的正则表达式错误分隔符

javascript - 仅匹配正整数和正浮点值的正则表达式

regular-language - 0转PDA的语言与常规语言一致吗?