我需要一個C#正則表達式來匹配IP子網,如「127.65.231」,但不匹配子網上的IP地址,如「127.65.231.111」。我發現這個正則表達式的IP地址:正則表達式來匹配IP子網
@「\ b \ d {1,3}。\ d {1,3}。\ d {1,3}。\ d {1,3 } \ b 「
,並在想我可以只刪除檢查最後一個字節,這樣的部分:
@」 \ b \ d {1,3} \ d {1。 ,3}。\ d {1,3} \ b「
但這與IP地址和子網都匹配。有人能幫忙嗎?
我需要一個C#正則表達式來匹配IP子網,如「127.65.231」,但不匹配子網上的IP地址,如「127.65.231.111」。我發現這個正則表達式的IP地址:正則表達式來匹配IP子網
@「\ b \ d {1,3}。\ d {1,3}。\ d {1,3}。\ d {1,3 } \ b 「
,並在想我可以只刪除檢查最後一個字節,這樣的部分:
@」 \ b \ d {1,3} \ d {1。 ,3}。\ d {1,3} \ b「
但這與IP地址和子網都匹配。有人能幫忙嗎?
@"^\d{1,3}\.\d{1,3}\.\d{1,3}$"
使用Line Anchors.添加^在您正則表達式的開頭和$結尾,驗證輸入的開始和結束。
這將匹配127.65.231
但不127.65.231.111
它也將匹配999.999.999這是無效的。 –
@Eric Lippert,我現在從我的測試中看到,但是我將如何改變它以僅匹配有效的ip八位字節,而不是每個255以上? –
只有256個。只需列出它們。 :) –
您可能會嘗試使用超前測量。另外,請逃脫.
字符—否則它會匹配任何字符:
@"\b\d{1,3}\.\d{1,3}\.\d{1,3}(?=\.\d{1,3})\b"
這隻要它後面匹配像127.65.231
任何字符串由像.111
的字符串。
IP地址在八位字節範圍從0到255你的正則表達式匹配無效的八位字節,如'400'。如果你想更準確一點,正則表達式會更復雜。 –
是的,因爲@BrianStephens說你的正則表達式也會匹配999,這根本就不是有效的IP –
[子網掩碼的正則表達式?]的可能重複(http://stackoverflow.com/questions/5360768/regular-expression-for -subnet-masking) – jason