我正在尝试设置正则表达式来验证变量名称。 规则相对简单,但我不是 reg-ex jedi :)
必须以字母或下划线开头
[a-zA-Z_]
后面可以跟任何重复的字母或数字,或者短划线“-”下划线“_”或点“.”
[a-zA-Z_0-9\-\.]*
到目前为止一切顺利
[a-zA-Z_][a-zA-Z_0-9\-\.]*
但它也可能包括这种模式的多次重复
\[\w+\]
这个模式,就像任何其他字符一样,它可以出现任意多次,除了第一个字母。
所以我尝试了一些选项,例如
[a-zA-Z_][a-zA-Z_0-9\-\.]*(\[\w+\])*
或
[a-zA-Z_][a-zA-Z_0-9\-\.(\[\w+\])]*
我一直没时间找到正确的语法。
这个想法非常简单,它是一种模式,它可以像第二个序列中的任何字符一样定位,一次或多次,以任何顺序
如果不清楚,请参阅下面的示例
### valid examples
valid_var_name[a]
valid3_va[x].[y].name
valid_myVar[w].x
valide_myVar[a1].sub[b].SUB1_2[c].sub[d1].sub[d1].sub[d1].sub[d1].sub[d1].sub[d1].isValid
### invalid examples
2invalid // start with a number
.invalid // start with a dot
invalid[] // nothing between bracket
invalid].name // char ] alone is invalid
invalid[.]name // [.] dot is not a word
invalid[].name[1] // [] without a word not valid
^[a-zA-Z_]([\w\-.]|\[\w+\])*$
以字母或下划线开头,然后允许任何字母数字、
-
、.
或[name]
的任何序列
需要锚点,这样它就不会匹配字符串中间的变量,例如
variable
中的 2variable
。