我需要在我的应用程序中检测格式为 @ base64 的字符串(例如@VGhpcyBpcyBhbiBlbmNvZGVkIHN0cmluZw==
)。
@必须位于开头,base64编码字符串的字符集为a-z
,A-Z
,0-9
,+
,/
和{ {1}}。是适当的常规表现来检测它们吗?
由于
答案 0 :(得分:10)
这样的事情应该做(不检查适当的长度!):
^@[a-zA-Z0-9+/]+={0,2}$
任何base64编码的字符串的长度必须是4的倍数,因此是额外的。
请参阅此处查看检查正确长度的解决方案:RegEx to parse or validate Base64 data
从链接答案快速解释正则表达式:
^@ #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
答案 1 :(得分:4)
尝试:
^@(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
答案 2 :(得分:0)
这是一个替代的正则表达式:
^@(?=(.{4})*$)[A-Za-z0-9+/]*={0,2}$
满足以下条件:
(?=^(.{4})*$)
[A-Za-z0-9+/]*
={0,2}