匹配正确的任意深度JavaScript名称空间的正则表达式是什么?
有效条目
a
a.b
$a._b.$$c.__d
a_$09.b_$09.c_$09
因此,基本上,JavaScript开放名称变量由点连接,每个单独的名称可以包含a-z
、A-Z
、_
、$
和0-9
,但不能以0-9
开头。
无效条目
1a
-不能以digitabc.1a
开头-子名称不能以数字also.a
开头-不能有前导dota.
-不能以点结尾
我试过这个:^([a-z$_][a-z$_0-9]*\.?)*[^\.]$
,它虽然禁止后面的.
,但允许任何额外的符号在末尾,比如,
,这是无效的。
发布于 2018-08-03 07:47:19
使用^[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
https://stackoverflow.com/questions/51663411
复制相似问题