質問

文字列がファイル名(名前はDOT ext)かどうかを確認したい。

ファイル名に /を含めることはできませんか? *:; {} \

preg_match()で使用する正規表現を提案してもらえますか?

役に立ちましたか?

解決

ここに行きます:

"[^/?*:;{}\\]+\\.[^/?*:;{}\\]+"

"これらのいずれでもない1つ以上の文字、ドット、これらの文字ではない文字を追加します。"

(ドットが本当に必要であると確信している限り-そうでない場合は、単に" [^ /?* :; {} \\] +"

他のヒント

$a = preg_match('=^[^/?*;:{}\\\\]+\.[^/?*;:{}\\\\]+$=', 'file.abc');

^ ... $ - begin and end of the string
[^ ... ] - matches NOT the listed chars.

正規表現は次のようになります(3文字の拡張子の場合):

^[^/?*:;{}\\]+\.[^/?*:;{}\\]{3}$

PHPではバックスラッシュをエスケープする必要があり、 preg_match()ではスラッシュをエスケープする必要があるため、

$pattern = "/^[^\\/?*:;{}\\\\]+\\.[^\\/?*:;{}\\\\]{3}$/";

" hosts" " .htaccess" などのファイル名に一致させるには、次のようにわずかに変更した式を使用します。

^[^/?*:;{}\\]*\.?[^/?*:;{}\\]+$

GolangプログラムでUnixファイル名のチェックに使用する正規表現の下:

    reg := regexp.MustCompile("^/[[:print:]]+(/[[:print:]]+)*<*>quot;)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top