gpt4 book ai didi

javascript - 提取函数体的正则表达式

转载 作者:行者123 更新时间:2023-11-30 13:26:54 25 4
gpt4 key购买 nike

I have this regexp

var bodyRegExp = /function[\\s]+[(].+[)][\\s]+{(.+)}/;

bodyRegExp.exec("module.exports = function () { /* any content */ }");

这是行不通的。为什么坏了?

这意味着将函数语句的主体从源代码中拉出。

编辑:

我傻了。尝试使用正则表达式解析 javascript 是愚蠢的。

最佳答案

不要转义反斜杠。一定要逃避你的大括号。您的字符集方括号表达式是不必要的。改用这个:

var bodyRegExp = /function\s+\(.*\)\s+\{(.+)\}/;

不过,这不是一个非常稳健的表达式——它不适用于多行函数,并且当你的函数有不止一组括号或大括号时会产生意想不到的结果——这似乎极有可能。但它至少应该解决您遇到的问题。

编辑:如果您总是处理一个字符串,该字符串包含一个没有前后语句的函数,解决方案非常简单。只获取第一个左大括号之后和最后一个右大括号之前的所有内容。

var fnBody = fn.substring(fn.indexOf("{") + 1, fn.lastIndexOf("}"));

如果您试图从包含不止一个函数的字符串中提取单个函数,则需要编写一个完整的解析算法来完成此操作。或者,如果这样做是安全的,您可以执行 JavaScript 并通过 var fn = module.exports.toString() 获取函数定义字符串,然后将上述代码应用于该字符串。

关于javascript - 提取函数体的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8187857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com