正则表达式检查base64编码文件的开始

时间:2017-08-24 12:21:32

标签: php regex

我想验证base64字符串的开头,通过javascript发送到我的php脚本。

这是示例值:data:text/plain;base64,YQ==

所以我想验证那个字符串:

`- starts with "data:"
 - followed by any two words separated with /
 - then there is ";"
 - and ends up with "base64,"`

2 个答案:

答案 0 :(得分:1)

Fabian几乎拥有它......

~^data:\w+/[\w\.-]+;base64,~

不要使用斜杠作为分隔符,这样你就不必逃避模式中的斜线。

点必须转义或匹配任何内容。

\w包含_。如果您不想包含下划线,则可以改为使用[\da-zA-Z]

^要求匹配从字符串的开头开始。

根据您的反馈,我已将连字符添加到第2和第3个字符类中。当连字符包含在字符类中时,它们必须首先列出或最后列出以避免使用斜杠转义。

这可能更精确:

~^data:[\da-zA-Z]+/[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*;base64,~

答案 1 :(得分:0)

preg_match("/data:\w+\/\w+;base64,.*/", "data:text/plain;base64,YQ==") == 1 ? print("base64") : print("don't know")