javascript - 验证 JavaScript 函数名称

标签 javascript regex validation function

我可以使用什么正则表达式来匹配有效的 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/

相关文章:

javascript - 仅当我在最后写入 Enter() 时图形才会更新

javascript - CSS Zoom 不影响 Javascript 添加的 SVG 元素

javascript - 正则表达式 javascript 中的 $1

javascript - 在 applyBindings (init/onload) 期间停止 Knockoutjs 验证

php - 如何在 Laravel 5.5 中获取验证消息

javascript - 尝试构建 react 库但不断收到错误: Element type is invalid: expected a string

javascript - 我正在尝试使用正则表达式来验证 javascript 中的电话号码

java - 使用替换第一方法替换字符串

php - preg_replace href anchor 与 anchor 文本

c# - IDX10501 : Signature validation failed. 尝试的 key : 'System.IdentityModel.Tokens.X509AsymmetricSecurityKey'