用于验证Struts 2中的URL或文件位置的正则表达式

时间:2014-06-19 18:08:59

标签: java xml regex validation struts2

美好的一天,

我正在寻找一个可以验证在struts 2环境中工作的URL和文件位置的正则表达式。

我在struts 2环境中的意思是,字符串将输入到文本字段中:

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

在struts 2中,如您所知,如果有人输入 google.ca ,则会返回

  

APP_LOCATION / NAMESPACE / google.ca

,并且不会指向谷歌,尽管输入通常是正确的。

因此,我想要一个将验证的正则表达式考虑到这一点(用户必须输入http,https,ftp或\\(如果文件位于共享驱动器上)。

编辑:

一些例子:

我想允许:

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 个答案:

答案 0 :(得分:3)

试试这个正则表达式:

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

你的情况有点复杂,因为最后一个,我认为这个正则表达式会验证一些你不想被验证的网址,因为它也试图覆盖子域名等等,但是你可以尝试一下在必要时进行调整。

此正则表达式将检查您的字符串是以http://,https://还是ftp://开头,后跟除空格或换行符之外的任意数量的字符,或者是否以\\开头,后跟任何字符串以文件扩展名结尾的字符数(例如,.doc)。如果它没有文件扩展名,则无效。

您可以在RegExr上测试正则表达式和其他任何内容!