gpt4 book ai didi

javascript - 在匹配整个函数时捕获函数名称

转载 作者:行者123 更新时间:2023-11-30 12:01:53 24 4
gpt4 key购买 nike

这个正则表达式

/function\s*\(\s*\S*\s*\)\s*\{/

应该匹配单个参数函数,比如

function foo ( xyz ) {

(注意“\S”将匹配任何非空白字符,我们可以假设原始代码使用可接受的字符是正确的,所以没关系)

我的问题是,我怎样才能像这样匹配一行文本

"baz function foo ( xyz ) { bar"

并捕获这两个:

"function foo ( xyz ) {"

"foo"

换句话说,我想以某种方式匹配函数签名的开头,以及捕获函数的名称。

我不知道该怎么做。

“简单”的方法是做类似的事情:

var match = str.match(regex);  // "function foo ( xyz ) {"

var start = 7; // "function" has two 'n's unfortunately
var end= match[0].indexOf('(');

var result = String(match[0]).substring(start,end).trim();

但我正在寻找一种不那么棘手的方法。

最佳答案

您可以像这样使用捕获组来捕获函数签名和函数名称。

正则表达式: 函数\s+([^(]+)\s*\(\s*[^)]+\s*\)\s*{

解释:

  • function\s+ 匹配标记函数开始的关键字 function

  • ([^(]+) 匹配并捕获第一组中的函数名称。可以使用 \1$1< 进行反向引用.

  • \s*\(\s*[^)]+\s*\)\s*{ 匹配 rest 直到左花括号 {满足了。

Regex101 Demo

关于javascript - 在匹配整个函数时捕获函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36444328/

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