Javascript 正则表达式 - 从字符串中获取函数名称
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
和第一个(
之间的任何值(使用非gredy量词*?
),然后获取[1]
组的值。最后,trim
删除周围的空格。
示例:
var functionString = "function dollar$$$AreAllowedToo () { }";
var name = functionString.match(/function(.*?)\(/)[1].trim();
console.log(name);
备注:
- javascript 中允许的变量名字符太多了,无法在集合中表达。我的回答会解决这个问题。 More about this here
- 您可能需要考虑在
function
和 (
之间添加注释的可能性,或者也考虑换行。但这实际上取决于您打算如何使用此正则表达式。
参加考试:
function /*this is a tricky comment*/ functionName // another one
(param1, param2) {
}
我正在尝试从 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
和第一个(
之间的任何值(使用非gredy量词*?
),然后获取[1]
组的值。最后,trim
删除周围的空格。
示例:
var functionString = "function dollar$$$AreAllowedToo () { }";
var name = functionString.match(/function(.*?)\(/)[1].trim();
console.log(name);
备注:
- javascript 中允许的变量名字符太多了,无法在集合中表达。我的回答会解决这个问题。 More about this here
- 您可能需要考虑在
function
和(
之间添加注释的可能性,或者也考虑换行。但这实际上取决于您打算如何使用此正则表达式。
参加考试:
function /*this is a tricky comment*/ functionName // another one
(param1, param2) {
}