![](/img/trans.png)
[英]What's the correct way to write a form for Spring MVC with form:input
[英]What's the correct way to write this IP valve?
我試圖使用閥門通過請求者的ip地址控制對我的tomcat(版本8)服務器的訪問。 我想要的是允許所有不以10開頭的地址以及所有以10.10開頭的地址。 這就是我所擁有的。
<valve className="org.apache.catalina.valves.RemoteAddrValve"> allow="[^10]\\.\\d+\\.\\d+\\.\\d+|10\\.10\\.\\d+\\.\\d+" />
它不起作用,它僅允許訪問以10.10開頭的地址。
正則表達式不是我的最佳選擇,我在做什么錯?
謝謝。
允許所有以10.10開頭的地址。 您可以使用以下正則表達式:
10\.10\..*
\\.
對應於“點”字符, .*
對應於任何字符。
要禁止所有以10.
開頭的地址,您必須編寫更復雜的內容: [^1].*
對應於不是以1
開頭的任何內容。 很好,如果IP地址不以1
開頭,我們將允許它。 1[^0].*
對應以1
開頭但第二個字符不為0
任何IP地址。 11xxx
, 15xxx
等。但是我們必須允許使用101.xxx
地址。 所以我們將不得不寫10[^.].*
。 該表達式將允許除10.xxx
任何內容,這很好。
因此,最終的正則表達式看起來像上述所有表達式之間的替代:
10\.10\..*|[^1].*|1[^0].*|10[^.].*
或稍微簡化一下:
(10\.10\.|[^1]|1[^0]|10[^.]).*
現在最好在開頭添加^
,在末尾添加$
,只是要確保此表達式將檢查整個IP地址:
^(10\.10\.|[^1]|1[^0]|10[^.]).*$
我根本沒有檢查輸入值是IP地址,但是我確定除了此檢查的IP地址外,tomcat不會傳遞任何東西。
[^ 10]不會排除以10開頭的字符串,它將匹配任何一個非零或零的字符。 因此,模式的第一部分將接受以下IP地址:2.XYZ,3.XYZ,...,9.XYZ
為了實現您的目標,您可以嘗試執行以下操作:
d\.\d+\.\d+\.\d+|[02-9]d\.\d+\.\d+\.\d+|[1-9]dd\.\d+\.\d+\.\d+|10\.10\.\d+\.\d+
這樣,第一種選擇將接受以一位開頭的任何IP。 第二個是任何以兩位數字開頭的IP(不包括10)。第三個是任何以三位數字開頭的IP(因此也不能為10)。
不過,還要再說一遍:通過使用d +來匹配數字,甚至無效值也可以被接受為IP組件(應該在0-255之間),例如257、3848等。但這對於您的問題域可能是可以的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.