Php 用于检测base64编码字符串的正则表达式
我需要在我的应用程序中检测格式为@base64(例如Php 用于检测base64编码字符串的正则表达式,php,regex,base64,Php,Regex,Base64,我需要在我的应用程序中检测格式为@base64(例如@vghpcybpcybhbblbmnvzgvkihn0cmluzw=)的字符串 @必须在开头,base64编码字符串的字符集是a-z,a-z,0-9,+,/和=。检测它们是否合适的常规表达 谢谢这样做应该可以(不检查长度是否合适!): 任何base64编码字符串的长度必须是4的倍数,因此需要额外的长度 请参见此处,了解检查正确长度的解决方案: 从链接答案快速解释正则表达式: ^@ #match "@" at beginning of str
@vghpcybpcybhbblbmnvzgvkihn0cmluzw=
)的字符串
@必须在开头,base64编码字符串的字符集是a-z
,a-z
,0-9
,+
,/
和=
。检测它们是否合适的常规表达
谢谢这样做应该可以(不检查长度是否合适!):
任何base64编码字符串的长度必须是4的倍数,因此需要额外的长度 请参见此处,了解检查正确长度的解决方案: 从链接答案快速解释正则表达式:
^@ #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
尝试:
^@(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$
=>这里有一个可选的正则表达式:
^@(?=(.{4})*$)[A-Za-z0-9+/]*={0,2}$
它满足以下条件:
- @符号后面的字符串长度必须是四的倍数-
(?=^(.{4})*$)
- 内容必须是字母数字字符或+或/-
[A-Za-z0-9+/]*
- 它的结尾最多可以有两个填充(=)字符-
={0,2}
^@(?=(.{4})*$)[A-Za-z0-9+/]*={0,2}$