Regex для проверки как веб, так и LDAP URL - PullRequest
0 голосов
/ 16 февраля 2012

Я создаю регулярное выражение ^(http://|https://|ldap://|ldaps://){1}[\S]*$ для проверки этих типов URL

Не должен подтверждать

Я буду использовать его для JavaScript

Ответы [ 2 ]

1 голос
/ 16 февраля 2012
m{ (?:ldap|http)s?://                   # Scheme

(?:(?!.*\d[/?:]) [a-z0-9\-._~%]+      | # IPv4 host (forbid ending with digit)
   # IP (yep, I've copied this regexp)
   (?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])
   \[[a-z0-9\-._~%!$&'()*+,;=:]+\] ) # or IPv6 host

(?::\d+)?                            # Port

(?:

  [/?]                               # Slash or question mark

  [-A-Z0-9+&@#/%?=~_|$!:,.;]*        # URL itself

)? # Technically, trailing / is required in URLs, but many browser implementations ignore it when accepting those
                                                }ix

Это регулярное выражение должно работать с /ix.Поскольку JS не включает модификатор /x, я собираюсь включить версию без него.

/(?:ldap|http)s?:\/\/(?:(?!.*\d[\/?:])[a-z0-9\-._~%]+|(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\[[a-z0-9\-._~%!$&'()*+,;=:]+\])(?::\d+)?(?:[\/?][\-A-Z0-9+&@#\/%?=~_|$!:,.;]*)?/i

Обратите внимание, что в URL-адресах HTTP допускается много символов без экранирования с помощью знака %.Вы, вероятно, не хотели бы, чтобы URL не передавался только потому, что он содержит разрешенный в URL-адресе символ *:).

0 голосов
/ 16 февраля 2012

для IP вы можете использовать
^(http://|https://|ldap://|ldaps://)((\\d{1,3}\\.){3}\\d{1,3}(:\\d{1,5})?)$
Но для других URL-адресов ... Вы должны проверить, отвечает ли сайт. Потому что это может быть сайт, скажем wwsw.com, и как ваш регулярный пользователь должен знать, настоящий это сайт или нет? может быть реальный сайт с поддоменом wwsw.
EDIT:
GlitchMr прав. Для IPv4 используйте его регулярное выражение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...