我想要正则表达式值没有空格(^[\S]*$
),只包含字母(\w+
)。但我如何将这两个结合到一个正则表达式?如何正则表达一个不包含空格的单词?
预期的结果应该是:
oneword: true
one word: false
1word: false
我想要正则表达式值没有空格(^[\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字符类(仅美国ASCII)在this document。
+ for non-empty strings :) –