Javascript 从var值中查找特定模式
我有一个包含内容的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") >
[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
?