我想正则表达式一个值没有空格(^[\S]*$
)并且只包含字母(\w+
)。但是如何将这两个组合成一个正则表达式?
预期结果应该是:
oneword: true
one word: false
1word: false
我猜你可能想要类似的东西(如果空字符串是有效的):
^[A-Za-z]*$
\w
也包含数字_
,所以会匹配1word
.
对于匹配的字母,只有这个正则表达式就足够了:
^[a-zA-Z]+$
\w
表示字母、数字和下划线\w
不仅匹配字母,还匹配数字,下划线(_
)。要仅匹配字母,请使用:
^[A-Za-z]+$
如果你想要一个非正则表达式的解决方案,也许你可以尝试这样的事情:
public boolean valid(final String string){
for(final char c : string.toCharArray())
if(!Character.isLetterOrDigit(c))
return false;
return true;
}
使用\p{Alpha}
字母字符:[\p{Lower}\p{Upper}]
使用上面的正则表达式将是\p{Alpha}+
,它匹配一个或多个字母字符。这会忽略数字、下划线、空格等。
有关更多信息,请参阅本文档中的 POSIX 字符类(仅限 US-ASCII)部分。