从var值中查找特定的模式

Find specific pattern from var value

本文关键字:模式 查找 var      更新时间:2023-09-26

我有一个var对象,里面有内容,我想找到数组文本看起来像下面的模式

值:function()

两者之间的间隔无关紧要,

例如,对于下面的文本,我应该得到一个数组[dosomthing,press,click]

doSomething:function()
press : function()

click: function

我需要一个类似的数组

在搜索论坛后,我发现了一些不适合我的例子。知道怎么处理吗?

var array = (s.indexOf("/'w+:'s*:function") > -1);

使用正向前瞻来匹配后面跟着字符串:function 的单词字符

> s = 'doSomething:function()'npress : function()'n'nclick: function'
> s.match(/'w+(?='s*:'s*function)/g)
[ 'doSomething', 'press', 'click' ]

解释:

'w+                      word characters (a-z, A-Z, 0-9, _) (1 or
                         more times)
(?=                      look ahead to see if there is:
  's*                      whitespace ('n, 'r, 't, 'f, and " ") (0
                           or more times)
  :                        ':'
  's*                      whitespace ('n, 'r, 't, 'f, and " ") (0
                           or more times)
  function                 'function'
)                        end of look-ahead

看起来您发布了一个格式错误的对象。如果我们更正代码。。

{
    doSomething:function() {},
    press : function(){}, 
    click: function(){}
}

我们可以使用Object.keys()来提取其密钥,然后仅通过方法对其进行过滤。

var myObject = {
    doSomething: function(){},
    press: function(){},
    click: function(){},
    someOtherProperty: 5
};
var keys = Object.keys(myObject);
var methods = keys.filter(function(key){
    return typeof myObject[key] == 'function';
});

变量methods将为['doSomething', 'press', 'click']