javascript - 使用单个正则表达式仅提取函数名称(字符串值)

标签 javascript regex

我正在尝试使用正则表达式从 javascript 文件中提取函数名称。 2个案例是
案例一:

{ 'test1': function(){},
  'test2': function(){}
}

案例 2:

{ test1: function(){}
  test2: function(){}
}

两种情况的预期结果:[test1, test2]

现在,当我将此正则表达式与此 javascript 代码一起使用时

contents.match(/(.+)(?=: function\()/g);

我得到的当前结果是

[ '\t\'test1\'',
    '\t\'test2\'']

我如何获得预期结果: [test1, test2] ,不包括像\t\' 这样的特殊字符

提前致谢

最佳答案

捕获任何字符串(不是空格,也不是 '"),当它后面可能跟有 ' 时"、任何空格和 : function

let contents = `
{ test1:function(){}
  'test2' : function(){}
  "tes-t2": function(){}
  "teè#//st2"   : function(){}
}
`
console.log(contents.match(/([^'"\s]+)(?=['"]?\s*:\s*function\()/g))

关于javascript - 使用单个正则表达式仅提取函数名称(字符串值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58383098/

相关文章:

javascript - 在元素上绘制边框,但不捕获事件

javascript - 如何在angular2中重用表格组件?

regex - vim 语法匹配正则表达式未按预期工作

ruby-on-rails - 我怎样才能加快这个正则表达式?

c++ - boost 非结构化字符串的 regex_search

javascript - Laravel 和 Ajax : Send specific url to get data?

javascript - nodejs 的 View 引擎 Handlebar 在 Hapijs 上的 Angular 代码

javascript - 在另一个函数内运行函数,但仅在 ajax 完成后运行

查找重复组的 Java 模式

java - 用于确定字符串是否为单个重复字符的正则表达式