我想验证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,"`
答案 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")