-3

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

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

但这对我不起作用。请帮忙。

4

5 回答 5

4

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

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

将使用前瞻来查看字符串中A-Z 任何位置的范围内是否有两个连续的字符。
要检查前两个是否在该范围内,您可以执行以下操作:

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

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

于 2012-07-23T15:13:33.727 回答
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));
}

没有正则表达式就容易多了。

于 2012-07-23T15:09:30.173 回答
1

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

于 2012-07-23T15:05:07.610 回答
0

您是否关心非英语语言支持?input.matches("\\p{L}{2}.*")会成功的。

于 2012-07-23T15:18:52.513 回答
0

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

于 2012-07-23T16:34:40.173 回答