2016-08-01 43 views
1

我已經寫了下面的測試代碼片斷:檢查字符串是字母數字與長度爲1至5

"123".matches("\\[a-zA-Z0-9]{1,5}"); 

然而,它返回false

爲什麼以及如何解決這個問題?

+3

我很驚訝它運行在所有,鑑於不平衡'[]'。 –

+5

第一個'''不應該逃脫。刪除'''''。 –

+0

@Andy Turne lenght應該是{1,5} – gstackoverflow

回答

3

你與\\,這意味着在方括號之間的表達逸出第一方括號不被視爲字符類。刪除逃跑,你應該是好的:

"123".matches("[a-zA-Z0-9]{1,5}" 
// Here -------^ 
6

通過轉義第一個[,您將其定義爲字面[,而您想要定義字符類別(括號表達式)。

刪除\

"123".matches("[a-zA-Z0-9]{1,5}"); 
      ^ 

Java demo

System.out.println("123".matches("[a-zA-Z0-9]{1,5}")); // = > true 
+0

@gstackoveroverflow:只是我的意見:最好的工作答案提供首先值得接受。 Mureinik的回答是一樣的,並且在我的[comment]之後發佈(http://stackoverflow.com/questions/38693939/check-that-string-is-alphanumeric-with-length-1-5/38693976#comment64766620_38693939)和回答。我認爲這是不公平的,因此我撤銷了我的贊同。 –

3

正則表達式,而不\\會工作。你不需要逃避任何事情。

"123".matches("[a-zA-Z0-9]{1,5}"); 
相關問題