我想驗證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,/' –