2010-10-08 29 views
1

考慮測試端口號的正則表達式。正則表達式在Android中的端口號?

(6553[0-5]|655[0-2]\d|65[0-4]\d{2}|6[0-4]\d{3}|[1-5]\d{4}|[1-9]\d{0,3}) 

這在Android中無效。

任何想法是什麼端口號正則表達式應該看起來像在Android?

+2

定義無效?不編譯,不符合你想要的? – Jon 2010-10-08 22:39:13

回答

11

一般來說,正則表達式對於數值驗證並不是很好。我建議在匹配的組上使用Integer.parseInt,然後檢查它是否小於65536.

+0

同意。我嘗試使用正則表達式驗證tokenizer的整數範圍,並試圖讓它正確無誤。匹配[0-9] +,然後將其轉換爲數字格式。 – colithium 2010-10-08 22:49:27

2

"(6553[0-5]|655[0-2]\\d|65[0-4]\\d{2}|6[0-4]\\d{3}|[1-5]\\d{4}|[1-9]\\d{0,3})"適用於a Java Regex test page假設您正在編寫Java代碼。您可能必須避免Java字符串文字的反斜槓才能正常工作。但是,這個表達式並不是零是有效的端口號。

-1

這是舊的,但如果有人想知道如何使用tryparse,開發人員提到的一個:

int portNumber; 
if (int.TryParse(inputPortValue, out portNumber) 
    && portNumber >= 256 
    && portNumber <= 0){ 
    error = "Invalid Port: " + inputPortValue 
    ". Please verify."; 
    return false; 
    } 
+0

有沒有方法稱爲int.TryParse()... – 2018-02-23 10:01:28

+0

它實際上是在C#中。 https://stackoverflow.com/questions/15294878/how-the-int-tryparse-actually-works不知何故錯過了它是Android的問題或可能稍後編輯。 – sgupta 2018-02-24 03:17:27