RegEx для обнаружения строк в кодировке base64 - PullRequest
11 голосов
/ 12 ноября 2011

Мне нужно обнаружить строки с формой @ base64 (например, @VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==) в моем приложении.

Символ @ должен быть в начале, а кодировка для строк, закодированных в base64составляет a-z, A-Z, 0-9, +, / и =.Будет ли подходящим регулярное выражение для их обнаружения?

Спасибо

Ответы [ 2 ]

10 голосов
/ 12 ноября 2011

Нечто подобное должно делать (не проверяет правильную длину!):

^@[a-zA-Z0-9+/]+={0,2}$

Длина любой строки в кодировке base64 должна быть кратна 4, следовательно, дополнительная.

См. Здесь решение, которое проверяет правильность длины: RegEx для анализа или проверки данных Base64

Краткое объяснение регулярного выражения из связанного ответа:

^@ #match "@" at beginning of string
(?:[A-Za-z0-9+/]{4})* #match any number of 4-letter blocks of the base64 char set
(?:
    [A-Za-z0-9+/]{2}== #match 2-letter block of the base64 char set followed by "==", together forming a 4-letter block
| # or
    [A-Za-z0-9+/]{3}= #match 3-letter block of the base64 char set followed by "=", together forming a 4-letter block
)?
$ #match end of string
4 голосов
/ 12 ноября 2011

попробуйте с:

^@(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$

=> RegEx для анализа или проверки данных Base64

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