我想形成一个正则表达式,承认变量名称的声明.用户将输入他们想要的变量名字符串,程序必须检查变量是否有效.
我一整天都在努力,无法得到正确的答案.
Ale*_*ier 28
我们要做的第一件事是收集第一个字符的所有有效字符的列表:
[a-zA-Z_$]
Run Code Online (Sandbox Code Playgroud)
然后是其他人物:
[a-zA-Z_$0-9]
Run Code Online (Sandbox Code Playgroud)
我们想匹配整个字符串,我们可以有0个或更多的其他字符,所以正则表达式变成:
^[a-zA-Z_$][a-zA-Z_$0-9]*$
Run Code Online (Sandbox Code Playgroud)
我允许在正则表达式中的第一个字符中的大写字符(以及美元符号),因为这是对有效性的测试,而不是对格式良好的变量.(注意常量应该是全部大写,包括第一个字母.)
你可以使用这个:
"^[_a-z]\\w*$"
Run Code Online (Sandbox Code Playgroud)
这个怎么运作:
^ // Match at the beginning
[_a-z] // Match either "_", or "a-z" at the beginning
\\w* // Match zero or more of characters - [a-zA-Z0-9_], after the beginning
$ // Till the end
Run Code Online (Sandbox Code Playgroud)
注-根据Java命名公约,一个变量应该不会有启动大写字母,所以我不包括-[A-Z]在第一个字符类。
此外,由于 Java 允许$在变量名中使用 ,即使在开始时,您也应该考虑将其添加到您允许的字符集中。因此,您可以将上述正则表达式修改为:
"^[_$a-z][\\w$]*$"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17928 次 |
| 最近记录: |