我在java中编写了正则表达式,用于检查字符串的有效性,但遗憾的是它不起作用。
^ [A-ZA-Z] [A-ZA-Z0-9 _]
规则:
字符串可以是字母数字,_是唯一允许的特殊字符
字符串只能以字母a-z或A-Z
开头以下java代码返回false,即使满足所有条件。
"a1b".matches("^[a-zA-Z][a-zA-Z0-9_]")
答案 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