如何仅使用正则表达式检查字符串是否由字母组成
我知道如何只检查一个角色:if (s.matches("\\w")) System.out.println(true);
但我不明白如何检查完整的字符串。
答案 0 :(得分:3)
\w
在其表达式中包含数字。你可以做到
if (s.matches("[a-zA-Z]*")) {
...
}
其中*
匹配0个或更多字符。请注意,此模式也匹配空字符串,因此您可能希望使用+
量词而不是
答案 1 :(得分:2)
将matches("\\w")
替换为matches("^[A-Za-z]*$")
。这应该指示匹配器期望字符串完全由0或更多字母组成(不区分大小写)。
*
表示在它之前的重复次数为零或更多。另一方面,+
期望至少有一个实例在它之前的任何实例,因此,*
运算符可能匹配一个空字符串,我不知道它是否是你在追求。
答案 2 :(得分:0)
您可以使用正则表达式匹配[a-zA-Z]
,而不是查找单个字符w
,并添加+
以指定您想要所有字符。
类似的东西:
System.out.println(s1.matches("[a-zA-Z]+"));
应该这样做。