仅匹配以两个字母开头的字符串

时间:2012-07-23 15:03:05

标签: java regex

我正在尝试使用这个正则表达式:

if (input.matches("(^(?=.*[A-Z]{2}"))

但这不适合我。请帮忙。

5 个答案:

答案 0 :(得分:4)

您正在使用的正则表达式:

"^(?=.*[A-Z]{2})" //added the unmatched paranthesis

将使用预测查看字符串中A-Z 范围内范围内是否有两个连续字符。
要检查前两个是否在该范围内,您可以这样做:

input.matches("^[A-Z]{2}.*")

请注意,您需要.*,因为matches()必须与整个input字符串匹配才能返回true。

答案 1 :(得分:2)

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));
}

没有正则表达式会轻松得多。

答案 2 :(得分:1)

if(input.matches("^[a-zA-Z]{2}")

答案 3 :(得分:0)

您是否关心非英语语言支持? input.matches("\\p{L}{2}.*")会做到这一点。

答案 4 :(得分:0)

地狱耶!您输入的正则表达式不起作用,因为它不是标准的。它应该是A和O字符。