首页 > 解决方案 > 正则表达式匹配一个有效的 JavaScript 命名空间

问题描述

匹配正确的任意深度 JavaScript 命名空间的正则表达式是什么?

有效条目

所以基本上,JavaScript 开放名称变量由点连接,每个单独的名称可以包含a-zA-Z、和_,但不能以 . 开头。$0-90-9

无效条目

我试过这个:^([a-z$_][a-z$_0-9]*\.?)*[^\.]$,虽然禁止尾随.,但最后允许任何额外的符号,例如,, 这是无效的。

标签: javascriptregex

解决方案


用途^[a-zA-Z\$\_][0-9a-zA-Z\$\_]*(\.[a-zA-Z\$\_][0-9a-zA-Z\$\_]*)*$

因为\w匹配任何单词字符(等于[a-zA-Z0-9_]),

正如@emsimpson92 所说,您可以拥有一个简化版本:

^[a-zA-Z\$\_][\$\w]*(\.[a-zA-Z\$\_][\$\w]*)*$

对于@vitaly-t 评论的最短版本(删除了不必要的转义),它将是:

/^[a-z$_][$\w]*(\.[a-z$_][$\w]*)*$/i

正则表达式在线


推荐阅读