Есть ли способ проверить, представляет ли регулярное выражение URL - PullRequest
0 голосов
/ 13 октября 2011

Есть ли способ проверить, представляет ли регулярное выражение действительный URL-адрес?Скажем, регулярные выражения представляют собой строки Java, есть ли способ проверить, представляют ли эти строки действительный URL-адрес?допустимые регулярные выражения, представляющие URL-адреса, но s4 недействителен.

Спасибо, Sony

Ответы [ 3 ]

1 голос
/ 13 октября 2011

Легко создать Regex, который будет соответствовать определенным URL-адресам, но практически невозможно написать тот, который будет соответствовать любому действительному URL, а также НЕ соответствовать любому недействительномуURL-адрес.Для начала вы должны справиться с процентным кодированием и правилами о том, когда его можно / нужно использовать для разных символов.

Я также должен отметить, что none ваших примеров не являетсядействительный URL-адрес в соответствии со спецификациями URL-адресов.


Мой совет - использовать new URL(String) или new URI(String) для проверки недействительных URL-адресов, а затем проверять компоненты для выполнения детального сопоставления.

0 голосов
/ 13 октября 2011

Звучит так, как будто пост спрашивает, как определить, будет ли данное регулярное выражение соответствовать действительному URL.Не соответствует ли конкретный пример регулярного выражения URL-адресу.

Это, вероятно, можно обобщить, чтобы определить, может ли язык, соответствующий данному регулярному выражению, также соответствовать "каноническому" регулярному выражению, которое соответствует всем URL-адресам.Этот предыдущий вопрос может быть полезен:

Существует ли алгоритм, который может определить, соответствует ли один регулярный язык любому входу, которому соответствует другой регулярный язык?

0 голосов
/ 13 октября 2011

Любой из них должен совпадать с любым URL-адресом (если это ваш вопрос, формулировка немного загадочная):

String urlRegex = "^(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
String regexUrl = "\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...