Angular源代码中的正则表达式

泰勒·杨

只需阅读以下角度源代码中的代码即可。这是依赖注入的一部分。基本上,这更多是关于正则表达式的。

var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m;
var FN_ARG_SPLIT = /,/;
var FN_ARG = /^\s*(_?)(\S+?)\1\s*$/;
var STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
var $injectorMinErr = minErr('$injector');
function annotate(fn) {
  var $inject,
      fnText,
      argDecl,
      last;

  if (typeof fn === 'function') {
    if (!($inject = fn.$inject)) {
      $inject = [];
      if (fn.length) {
        fnText = fn.toString().replace(STRIP_COMMENTS, '');
        argDecl = fnText.match(FN_ARGS);
        forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg){
          arg.replace(FN_ARG, function(all, underscore, name){
            $inject.push(name);
          });
        });
      }
      fn.$inject = $inject;
    }
  } else if (isArray(fn)) {
    last = fn.length - 1;
    assertArgFn(fn[last], 'fn');
    $inject = fn.slice(0, last);
  } else {
    assertArgFn(fn, 'fn', true);
  }
  return $inject;
}

我尝试在chrome控制台中运行以下代码,令我感到困惑的是第二个元素是从哪里来的?

根据我的理解,我认为它应该只返回第一个元素function testService(testService, loginService)

var FN_ARGS = /^function\s*[^\(]*\(\s*([^\)]*)\)/m;
var testFunc = function testService (testService, loginService) {
    loginService.login();
}
var str = testFunc.toString();
var arr = str.match(FN_ARGS);
console.log(arr);
//["function testService(testService, loginService)", "testService, loginService"]

有人可以帮我吗,谢谢。

扎卡里·库恩(Zachary Kuhn)

match如果在索引0处匹配,则返回整个字符串。其他索引表示已匹配的正则表达式组。您可以在带括号的正则表达式中声明一个组。在这种情况下,组为([^\)]*)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在HTML源代码中使用的正则表达式

Notepad ++中JSP源代码中的SQL注入模式的正则表达式

从源代码文件中匹配正则表达式并保存到列表/数据框

Python正则表达式在源代码中查找非重复语句

在源代码中查找左值和右值的正则表达式(忽略 ==)

在Perl正则表达式中源代码并运行Shell函数

Python正则表达式匹配源代码中以新行结尾的文本

正则表达式:在JavaScript源代码中匹配'in'运算符

如何在Python中创建用于标记Java源代码的正则表达式

如何使用正则表达式在源代码中查找未注释的命令

用于在源代码中搜索的正则表达式(while 循环)

正则表达式,用于捕获HTML源代码中花括号之间的所有内容

是否可以使用正则表达式的捕获组在给定的源代码中剥离javascript JSDoc?

如何通过正则表达式查找“我的源代码中的数组的显式int访问”?

preg_match中的正则表达式不匹配行注释源代码并捕获错误的子模式

正则表达式用于javascript中的特定代码

Java中的正则表达式代码

python中的正则表达式提取某些代码

正则表达式代码中的Ruby变量

正则表达式以匹配HTML代码中的模式

与bash中的语言代码匹配的正则表达式

如何消除正则表达式代码中的空格?

正则表达式用于javascript中的特定代码

在Notepad ++中限制正则表达式代码

解析源代码时出现正则表达式问题

如果源代码包含关键字/正则表达式,如何使Maven构建失败

如何使用正则表达式从 HTML 源代码中提取 JSON

供应代码正则表达式

angular指令中的无效正则表达式错误