我正在尝试使用这个正则表达式:
if (input.matches("(^(?=.*[A-Z]{2}"))
但这对我不起作用。请帮忙。
您正在使用的正则表达式:
"^(?=.*[A-Z]{2})" //added the unmatched paranthesis
将使用前瞻来查看字符串中A-Z
任何位置的范围内是否有两个连续的字符。
要检查前两个是否在该范围内,您可以执行以下操作:
input.matches("^[A-Z]{2}.*")
请注意,您需要.*
, sincematches()
必须匹配整个input
字符串才能返回 true。
private boolean isAlpha(char c) {
return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')
}
private boolean startsWith2Alpha(String s) {
return (s.length() >= 2) && isAlpha(s.charAt(0)) && isAlpha(s.charAt(1));
}
没有正则表达式就容易多了。
if(input.matches("^[a-zA-Z]{2}")
您是否关心非英语语言支持?input.matches("\\p{L}{2}.*")
会成功的。
地狱是的!您输入的正则表达式不起作用,因为它不是标准的。它应该带有 A 和 O 字符。