如果字符串在其中的任何位置包含一个或多个字母,那么正则表达式将被评估为true。
例如:
1222a3999
将是真的
a222aZaa
将是真的
aaaAaaaa
将是真的
但:
1111112())--
将是假的
我尝试过:^[a-zA-Z]+$
和[a-zA-Z]+
但是当字符串中有任何数字和其他字符时都不起作用。
答案 0 :(得分:4)
.*[a-zA-Z].*
上述意思是一个字母,在它之前/之后 - 一切都很好。
在java中:
String regex = ".*[a-zA-Z].*";
System.out.println("1222a3999".matches(regex));
System.out.println("a222aZaa ".matches(regex));
System.out.println("aaaAaaaa ".matches(regex));
System.out.println("1111112())-- ".matches(regex));
将提供:
true
true
true
false
按预期
答案 1 :(得分:2)
这个正则表达式应该这样做:
[a-zA-Z]
只要字符串中的任何地方都有单个字母,它就匹配,它不关心任何其他字符。
[a-zA-Z]+
应该也有效,我不知道为什么它不适合你。
答案 2 :(得分:1)
^.*[a-zA-Z].*$
根据实施情况,match()
函数会检查整个字符串是否匹配(这可能是您的[a-zA-Z]
或[a-zA-Z]+
模式不起作用的原因)
使用上述模式match()
或使用某种search()
方法。
答案 3 :(得分:0)
.*[a-zA-Z]?.*
应该得到你想要的结果。
句号与除新行之外的任何字符匹配,星号表示这应该存在零次或多次。那么模式[a-zA-Z]?因为使用了问号,所以至少给我一个括号内的字符。最后结尾。*表示字母字符后面可以跟零个或多个任何类型的字符。