用于检查变量名称有效性的Java正则表达式

时间:2014-05-08 19:05:11

标签: java regex

我在java中编写了正则表达式,用于检查字符串的有效性,但遗憾的是它不起作用。

  

^ [A-ZA-Z] [A-ZA-Z0-9 _]

规则:

字符串可以是字母数字,_是唯一允许的特殊字符

字符串只能以字母a-z或A-Z

开头

以下java代码返回false,即使满足所有条件。

"a1b".matches("^[a-zA-Z][a-zA-Z0-9_]")

2 个答案:

答案 0 :(得分:3)

你需要使用量词*使你的正则表达式匹配第一个字母后的0次或更多次:

"a1b".matches("[a-zA-Z][a-zA-Z0-9_]*");

或者使用:

"a1b".matches("[a-zA-Z]\\w*");

PS:无需在^中使用锚点$String#matches,因为这已经隐含了。

答案 1 :(得分:3)

删除第^行的开头,并在最后一个字符类[]之后放置一个量词

System.out.println("a1b".matches("[a-zA-Z][a-zA-Z0-9_]*")); // true

你可以简单地使用..

System.out.println("a1b".matches("(?i)[a-z][a-z0-9_]*")); // true