我可以使用什么正则表达式来匹配有效的 JavaScript 函数名称...
例如myfunction
是有效的,但是 my<\fun\>ction
将是无效的。
[a-zA-Z0-9_])?
最佳答案
这比你想象的要复杂。根据ECMAScript标准,标识符是:
an IdentifierName that is not a ReservedWord
所以首先您必须检查标识符是否不是以下之一:
instanceof typeof break do new var case else return void catch finally
continue for switch while this with debugger function throw default if
try delete in
将来可能还有其他一些。
IdentifierName 开头为:
a letter
the $ sign
the _ underscore
并且可以进一步包含任何这些字符加上:
a number
a combining diacritical (accent) character
various joiner punctuation and zero-width spaces
这些字符是根据 Unicode 字符类定义的,因此 [A-Z]
不完整。 Λ
是一个字母; xi
是一个字母; 京
是一个字母。您可以在标识符中使用所有这些,包括用于函数名称的标识符。
不幸的是,JavaScript RegExp 不支持 Unicode。如果你说 \w
你只能得到 ASCII 字母数字。没有可行的方法来检查非 ASCII 标识符字符的有效性,除非用脚本携带 Unicode 字符数据库的相关部分,这将非常庞大且笨拙。
您可以尝试简单地允许所有非 ASCII 字符,例如:
^[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*$
关于javascript - 验证 JavaScript 函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2008279/