Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从var值中查找特定模式_Javascript_Jquery_Regex - Fatal编程技术网

Javascript 从var值中查找特定模式

Javascript 从var值中查找特定模式,javascript,jquery,regex,Javascript,Jquery,Regex,我有一个包含内容的var对象,我想找到数组 看起来像以下模式的文本 值:函数() 它之间的距离无关紧要 例如,对于以下文本,我应该获得一个数组[dosomthing,press,click] doSomething:function() press : function() click: function 我需要一个像这样的数组 在搜索论坛后,我发现了一些不适合我的例子。 你知道怎么处理吗 var array = (s.indexOf("/\w+:\s*:function") >

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

值:函数()

它之间的距离无关紧要

例如,对于以下文本,我应该获得一个数组
[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';
});

变量
方法
将是
['doSomething','press','click']

谢谢投票,这很好,我将标记为答案,请在正则表达式上添加一些解释。谢谢!根据您的意愿添加。谢谢,最后一个问题是,我应该如何忽略以下划线开头的名称,如_press:function()…尝试
\b[A-Za-z]\w*(?=\s*:\s*function)
您不想允许名称上的任何位置出现
\u