Регулярное выражение для проверки URL-адресов или расположения файлов в Struts 2

#java #xml #regex #validation #struts2

#java #xml #регулярное выражение #проверка #struts2

Вопрос:

Добрый день,

Я ищу регулярное выражение, которое проверяет URL-адреса и расположения файлов, которые будут работать в среде struts 2.

Я имею в виду, что в среде struts 2 строка будет вводиться в текстовое поле:

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

В struts 2, как вы знаете, если кто-то вводит google.ca , он вернется

APP_LOCATION/NAMESPACE/google.ca

и не будет указывать на Google, несмотря на то, что ввод обычно правильный.

Поэтому мне нужно регулярное выражение, которое будет проверять, чтобы учесть это (пользователь ДОЛЖЕН ввести http, https, ftp или \ (в случае файла, расположенного на общем диске).

Редактировать:

Некоторые примеры:

Я хочу разрешить:

 http://foo.com/blah_blah_(wikipedia)_(again) 
http://www.example.com/wpstyle/?p=364 
https://www.example.com/foo/?bar=bazamp;inga=42amp;quux 
http://✪df.ws/123 
ftp://foo.bar/baz 
http://foo.bar/?q=Test URL-encoded stuff 
http://1337.net 
http://a.b-c.de 
\asdf.233.netnatdfsAAAHQFFEEFFEE_H0EGV1AAAFFFEEEWeb DevWeb Applications TeamWeb Applications Team Document.docx
 

Комментарии:

1. можете ли вы предоставить нам несколько примеров

Ответ №1:

Попробуйте это для вашего регулярного выражения:

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

Ваш случай немного сложен из-за последнего, и я думаю, что это регулярное выражение подтвердит некоторые URL-адреса, которые вы не хотите проверять, Поскольку оно также пытается охватить поддомены и т. Д., Но вы можете попробовать и при необходимости внести коррективы.

Это регулярное выражение проверит, начинается ли ваша строка с http://, https:// или ftp://, за которой следует любое количество символов, кроме пробела или новой строки, или если она начинается с \ и сопровождается любым количеством символов, заканчивающихся расширением файла (например, .doc). Если у него нет расширения файла, оно будет недействительным.

Вы можете протестировать регулярное выражение и все остальное, что вы придумали, в RegExr!