2016-05-16 3 views
0

Я пытался проверить URI, введен в соответствии с RFC 3986URI регулярное выражение проверки в соответствии с RFC3986

в этом есть один я придумал

(?:[A-Za-z][A-Za-z0-9+.-]*:/{2})?(?:(?:[A-Za-z0-9-._~]|%[A-Fa-f0-9]{2})+(?::(?[A-Za-z0-9-._~]|[%][A-Fa-f0-9]{2})+)[email protected])?(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\\.){1,126}[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?::[0-9]+)?(?:/(?:[A-Za-z0-9-._~]|%[A-Fa-f0-9]{2})*)*(?:\\?(?:[A-Za-z0-9-._~]+(?:=(?:[A-Za-z0-9-._~+]|%[A-Fa-f0-9]{2})+)?)(?:&|;[A-Za-z0-9-._~]+(?:=(?:[A-Za-z0-9-._~+]|%[A-Fa-f0-9]{2})+)?)*)? 

Но почему-то это не удается на следующих примерах

LDAP: // [2001: db8 :: 7]/с = GB Objectclass один электронной почты:? John.D[email protected]

из RFC это самостоятельно.

Не уверен, что я делаю неправильно

Эта проверка делается, когда SubjectAltName дается для сертификата, и мне нужно, чтобы проверить его для хорошо сформированного URI, так что оно не обязательно при генерации сертификата. Для генерации сертификата, Im использование BouncyCastle

ответ

0

регулярного выражения при условии имеет некоторые ошибки, я исправил их здесь:

(?:[A-Za-z][A-Za-z0-9+.-]*:\/{2})?(?:(?:[A-Za-z0-9-._~]|%[A-Fa-f0-9]{2})+(?::([A-Za-z0-9-._~]?|[%][A-Fa-f0-9]{2})+)[email protected])?(?:[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?\\.){1,126}[A-Za-z0-9](?:[A-Za-z0-9-]*[A-Za-z0-9])?(?::[0-9]+)?(?:\/(?:[A-Za-z0-9-._~]|%[A-Fa-f0-9]{2})*)*(?:\\?(?:[A-Za-z0-9-._~]+(?:=(?:[A-Za-z0-9-._~+]|%[A-Fa-f0-9]{2})+)?)(?:&|;[A-Za-z0-9-._~]+(?:=(?:[A-Za-z0-9-._~+]|%[A-Fa-f0-9]{2})+)?)*)? 

Однако это не исправить соответствия/не проблема соответствия. На каком сайте появилось это регулярное выражение? Ваша ссылка была просто текстовым файлом? Я спрашиваю это, как регулярное выражение даже не соответствует основной HTTP: // и т.д.

Взгляните сюда, чтобы увидеть, если это предыдущий пост поможет вам:

Other SO post

Смежные вопросы