我想验证base64字符串的开始,这是通过JavaScript发送到我的PHP脚本。正则表达式检查base64编码文件的开始
这是例如值:data:text/plain;base64,YQ==
所以我想验证字符串:
`- starts with "data:"
- followed by any two words separated with/
- then there is ";"
- and ends up with "base64,"`
我想验证base64字符串的开始,这是通过JavaScript发送到我的PHP脚本。正则表达式检查base64编码文件的开始
这是例如值:data:text/plain;base64,YQ==
所以我想验证字符串:
`- starts with "data:"
- followed by any two words separated with/
- then there is ";"
- and ends up with "base64,"`
preg_match("/data:\w+\/\w+;base64,.*/", "data:text/plain;base64,YQ==") == 1 ? print("base64") : print("don't know")
这很好。但是应该有一条规则。用/分隔的正确单词可以有任意数量的点,因此它的格式就像这样'data:image/vnd.adobe.photoshop; base64,也是' – jusep
正确,更新正则表达式:'/data:\w+/.*; base64,。* /' –
的Fabian近了吧......
~^data:\w+/[\w\.-]+;base64,~
别不要使用斜线作为分隔符,这样你就不必逃离sl图案中的灰烬。
点必须被转义或者它会匹配任何东西。
\w
确实包括_
。如果您不想包含下划线,则可以使用[\da-zA-Z]
。
^
要求匹配从字符串开始处开始。
根据您的反馈我已将连字符添加到第二和第三个字符类。连字符包含在字符类中时,它们必须首先列出或最后列出,以避免斜线转义。
这可能是更精确的是这样的:
~^data:[\da-zA-Z]+/[\da-zA-Z-]+(?:\.[\da-zA-Z-]+)*;base64,~
这就像一个魅力。我刚刚添加了'^ data:\ w + \/[\ w \。\ - ] +; base64',所以它在第二个单词中也匹配“ - ”,因为像excel这样的文件的一些MIME类型在内部有斜杠。 – jusep
这可能帮助:'/数据:\ w + \/\ w +; BASE64,/' –
那好。但是应该有一条规则。用/分隔的右边的单词可以有任意数量的点,因此它可以像这样的数据格式化:image/vnd.adobe.photoshop; base64,也是 – jusep
Voilà:'/data:\w+\/[\w.]+; base64,/' –