2014-06-19 46 views
-2

好日子驗證網址或文件位置,正則表達式中的Struts 2

我在尋找一個驗證URL和文件位置,這將在Struts 2的工作環境中的正則表達式。

我在Struts 2的環境的意思是什麼,是字符串將被輸入到文本框:

<s:textfield name="linkAddr.urlAddress" id="linkAddr" maxlength="2500"/> 

在struts 2,如你所知,如果有人輸入google.ca,它會返回

APP_LOCATION/NAMESPACE/google.ca

,並且不會指向谷歌,儘管輸入通常是正確的。

因此,我想一個正則表達式將驗證要考慮到這一點(用戶必須輸入HTTP,HTTPS,FTP,或\\(在位於共享驅動器上的文件)的情況下。

EDIT :

一些例子:

我想允許:

http://foo.com/blah_blah_(wikipedia)_(again) 
http://www.example.com/wpstyle/?p=364 
https://www.example.com/foo/?bar=baz&inga=42&quux 
http://✪df.ws/123 
ftp://foo.bar/baz 
http://foo.bar/?q=Test%20URL-encoded%20stuff 
http://1337.net 
http://a.b-c.de 
\\asdf.233.net\natdfs\AAA\HQ\FFEE\FFEE_H0E\GV1\AAA\FFFEEE\Web Dev\Web Applications Team\Web Applications Team Document.docx 
+1

你能否給我們提供一些例子 – CMPS

回答

3

嘗試此您正則表達式:

((http://|https://|ftp://)([\S.]+))|((\\\\)(.+)(\.)(\w+)) 

你的情況有點複雜,因爲最後一個,我認爲這個正則表達式會驗證一些你不想驗證的URL,因爲它也試圖覆蓋子域等等,但是你可以嘗試一下,並在必要時進行調整。

這個正則表達式將檢查你的字符串是以http://,https://還是ftp://開頭,後面跟着除空白或換行符之外的任意數量的字符,或者以\\開頭並跟着任何數量的以文件擴展名結尾的字符(例如.doc)。如果它沒有文件擴展名,它將是無效的。

你可以測試出正則表達式和你在RegExr上遇到的任何其他東西!