2017-08-24 123 views
-1

私はjavascript経由で私のPHPスクリプトに送られるbase64文字列の開始を検証したいと思います。Base64でエンコードされたファイルの正規表現チェック

これは、例えば値である:data:text/plain;base64,YQ==

だから私はその文字列を検証する:

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

これは役立つかもしれない\ワット+ \/\ + W; base64で、/' –

+0

厥良いです。しかし、もう一つルールがあるはずです。 /で区切られた右の単語は、このデータのように書式をマシーンするように任意の数の点を持つことができます:image/vnd.adobe.photoshop; base64、 – jusep

+0

Voilà: '/data:\w+\/[\w.]+; base64、/ –

答えて

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

良いですね。しかし、もう一つルールがあるはずです。 /で区切られた右の単語は任意の数の点を持つことができるので、 'data:image/vnd.adobe.photoshop; base64、これも' – jusep

+0

のように書式をマッチします。regex: '/data:\w+/.*; base64、。*/' –

1

ファビアンはほぼそれを持っていた...

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

ドン」デリミタとしてスラッシュを使用すると、slをエスケープする必要はありませんパターンの灰。

ドットはエスケープする必要があります。ドットはエスケープする必要があります。

\wは、_を含みます。アンダースコアを含めたくない場合は、代わりに[\da-zA-Z]を使用してください。

^は、文字列の先頭から一致する必要があります。

フィードバックには2番目と3番目の文字クラスにハイフンを追加しました。ハイフンが文字クラスに含まれている場合は、スラッシュでエスケープするのを避けるためにハイフンを最初または最後に指定する必要があります。それは、このような、より正確かもしれない

: `/データ:

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

+0

これは魅力のように機能します。私は '^ data:\ w + \/[\ w \。\ - ] +; base64'を追加したので、2番目の単語の" - "にマッチします。 – jusep

関連する問題