2012-07-17 14 views
0

我想驗證的東西,如IP地址,如何檢查可選的可變長度的數字字符串?

它可能附加一個端口或不。讓我說:10.12.1.100和10.12.1.100:8080都可以。

我創造這樣的事情:

^10 \([0-9] | [1-9] [0-9] | 1([0-9] [0-9] )| 2([0-4] [0-9] | 5 [0-5]))\([0-9] |。[1-9] [0-9] | 1([0-9] [0-9])| 2([0-4] [0-9] | 5 [0-5]))\([0-9] |。[1-9] [0-9] | 1( [0-9] [0-9])| 2([0-4] [0-9] | 5 [0-5]))([ - +](:|?\ d [1,4]) )$

但是,它不適用於:10.12.1.100:8080零件。 如何實現這個部分([ - +]?(:| \ d [1,4]))?

如果我刪除([ - +]?(:| \ d [1,4]));它將有效地10.12.1.100部分權利。

感謝,

+1

TCP端口號替換([-+]?(:|\d[1,4]))$是一個16位數字,因此0-65535。你只檢查4位數字。 – 2012-07-17 18:38:05

+0

這種模式是討厭的,我建議使用類似@burning_LEGION提供的東西。如果你現在擁有的團隊結構是必需的,我想我有一個解決方案。 – used2could 2012-07-17 18:59:41

回答

1

使用這個表達式^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(:\d{1,5})?$

+0

謝謝,它很棒! – user965241 2012-07-17 18:57:19

0

您的特定模式好像是做了一些非常具體的IP匹配,否則我建議使用類似@burning_LEGION已建議。我猜測你的場景中有一些特定的東西會超出正常的IP解析。

我只擴展你的當前模式,因爲我假設你需要組結構保持不變。否則我會建議重寫。

但解決您的具體的例子,嘗試用([-+]?(:\d{1,5}))?$

+0

是的,你說得對,我的模式是做特定的IP匹配,只有端口部分是標準的。謝謝,你們倆。 – user965241 2012-07-17 21:00:30

相關問題