美好的一天,
我正在寻找一个可以验证在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
答案 0 :(得分:3)
试试这个正则表达式:
((http://|https://|ftp://)([\S.]+))|((\\\\)(.+)(\.)(\w+))
你的情况有点复杂,因为最后一个,我认为这个正则表达式会验证一些你不想被验证的网址,因为它也试图覆盖子域名等等,但是你可以尝试一下在必要时进行调整。
此正则表达式将检查您的字符串是以http://,https://还是ftp://开头,后跟除空格或换行符之外的任意数量的字符,或者是否以\\开头,后跟任何字符串以文件扩展名结尾的字符数(例如,.doc)。如果它没有文件扩展名,则无效。
您可以在RegExr上测试正则表达式和其他任何内容!