#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!