2012-07-23 68 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字符。