2012-07-23 34 views
-3

开始仅匹配字符串我试图用这个表达式:与两个字母

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

但是这不是为我工作。请帮忙。

+0

你明白你现在使用的正则表达式吗? – 2012-07-23 15:05:15

+0

您能否给我们一些应该和不应该匹配的例子,以及哪些不能按预期工作? – Keppil 2012-07-23 15:05:19

+0

如果输入= TEST123456 ---这应该通过和f输入= T2ST123456 - 这应该失败 – Lucky 2012-07-23 15:09:57

回答

4

您使用正则表达式:

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

将使用前瞻,看看是否有两个连续的字符范围A-Z的字符串中的任何
要检查前两个是在这个范围内,你可以做:

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

请注意,您所需要的.*,因为matches()必须将整个input字符串相匹配,返回真。

+0

感谢您的帮助..这工作正常,我测试了它,如果我想添加[az],如果在将来我用小写字母得到输入字符串.. – Lucky 2012-07-23 15:24:19

+0

'[AZ]'是一个字符类,意思是'[]'里面任何元素之一。为了允许更多,只需将它们添加到括号内,例如'[a-zA-Z]'。 – Keppil 2012-07-23 15:26:11

+0

感谢Keppil,它也适用于a-z。 – Lucky 2012-07-23 15:30:21

1

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

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

没有正则表达式就轻松多了。

0

你关心非英语语言支持吗? input.matches("\\p{L}{2}.*")将会诀窍。

0

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