1

我想正则表达式一个值没有空格(^[\S]*$)并且只包含字母(\w+)。但是如何将这两个组合成一个正则表达式?

预期结果应该是:

oneword: true
one word: false
1word: false
4

5 回答 5

7

我猜你可能想要类似的东西(如果空字符串是有效的):

^[A-Za-z]*$

\w也包含数字_,所以会匹配1word.

于 2013-10-24T12:37:11.600 回答
4

对于匹配的字母,只有这个正则表达式就足够了:

^[a-zA-Z]+$
  • \w表示字母、数字和下划线
于 2013-10-24T12:36:31.283 回答
1

\w不仅匹配字母,还匹配数字,下划线(_)。要仅匹配字母,请使用:

^[A-Za-z]+$
于 2013-10-24T12:36:58.897 回答
1

如果你想要一个非正则表达式的解决方案,也许你可以尝试这样的事情:

public boolean valid(final String string){
    for(final char c : string.toCharArray())
        if(!Character.isLetterOrDigit(c))
            return false;
    return true;
}
于 2013-10-24T12:40:28.373 回答
1

使用\p{Alpha}字母字符:[\p{Lower}\p{Upper}]

使用上面的正则表达式将是\p{Alpha}+,它匹配一个或多个字母字符。这会忽略数字、下划线、空格等。

有关更多信息,请参阅本文档的 POSIX 字符类(仅限 US-ASCII)部分。

于 2013-10-24T12:41:12.580 回答