我正在尝试从javascript中的字符串中获取函数名称。
假设我有这个字符串:
function multiply($number) {
return ($number * 2);
}
我在javascript中使用以下正则表达式:
/([a-zA-Z_{1}][a-zA-Z0-9_]+)\(/g
但是,选择的是multiply(
。这是错的。我想要的是没有multiply
的单词(
,但正则表达式应该记住函数名称必须附加(
。
我无法完成这件事。我怎样才能为此制作正确的正则表达式?我知道这不是我真正应该做的事情,并且它非常敏感,但我仍然想尝试使这项工作。
答案 0 :(得分:2)
只需将\)
替换为(?=\()
`function multiply($number) {
return ($number * 2);
}`.match(/([a-zA-Z_{1}][a-zA-Z0-9_]+)(?=\()/g) // ["multiply"]
答案 1 :(得分:2)
您可以使用:
var name = functionString.match(/function(.*?)\(/)[1].trim();
在function
和第一个(
之间获取任何内容(使用非gredy量词*?
),然后获取组[1]
的值。最后,trim
删除周围的空格。
示例:强>
var functionString = "function dollar$$$AreAllowedToo () { }";
var name = functionString.match(/function(.*?)\(/)[1].trim();
console.log(name);
备注:强>
function
和(
之间评论的可能性,或者也是新行。但这实际上取决于你打算如何使用这个正则表达式。参加考试:
function /*this is a tricky comment*/ functionName // another one
(param1, param2) {
}