[英]Javascript regex - getting function name from string
我试图从javascript中的字符串获取函数名称。
假设我有以下字符串:
function multiply($number) {
return ($number * 2);
}
我在javascript中使用以下正则表达式:
/([a-zA-Z_{1}][a-zA-Z0-9_]+)\(/g
但是,选择的是multiply(
。这是错误的。我想要的是不包含(
的单词) multiply
,尽管正则表达式应记住,函数名称必须附加一个(
。
我做不到。 我该如何为此制作合适的正则表达式? 我知道这不是我真正应该做的事情,并且它对错误非常敏感,但是我仍然想尝试使这项工作生效。
只需将最后一个\\)
替换为(?=\\()
`function multiply($number) {
return ($number * 2);
}`.match(/([a-zA-Z_{1}][a-zA-Z0-9_]+)(?=\()/g) // ["multiply"]
您可以使用:
var name = functionString.match(/function(.*?)\(/)[1].trim();
获取function
和第一个function
之间的任何function
(
(使用非灰色量词*?
),然后获取组[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) {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.