RegEx для обнаружения строк с кодировкой base64

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

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

Спасибо

Ответ 1

Что-то вроде этого должно делать (не проверяет правильную длину!):

^@[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

Ответ 3

попробуй это

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

работал на меня