从var值中查找特定模式

时间:2014-11-03 13:27:08

标签: javascript jquery regex

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

值:函数()

它之间的空间无关紧要,

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

doSomething:function()

press : function()


click: function

我需要得到像

这样的数组

在搜索论坛后,我发现了一些对我不起作用的例子。 任何想法如何处理它?<​​/ p>

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

{
    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']