文字列に文字が含まれているかどうかを検証するためにスクリプトを作成します。しかし、私はこの文字列に問題があります。
これは私のスクリプトです:
var special_char = ['|', '/', '&', ' ', '$', '@', ';', '*', '%', '.', ','];
var file_name_ext = upl_data.substring(upl_data.lastIndexOf("\\") + 1, upl_data.length);
var file_name = file_name_ext.split('.');
var isVerified = 0;
for (var i = 0; i < special_char.length; i++){
if(file_name[0].indexOf(special_char[i]) == -1) {
isVerified += 0;
} else {
isVerified += 1;
}
}
if(isVerified != 0){
alert("NOT OK");
}
else{ alert("OK"); }
上記のスクリプトは、次の文字列に遭遇するまでうまく機能しますXXX.YYY.pdf
。.
を使用して分割したためfile_name[0]
、すべてを無視しますspecial_char
。この問題を修正するにはどうすればよいですか?
次の正規表現を使用して、拡張子のないファイル名を取得できます。
var file = 'xxx.yyy.pdf',
filename = file.match(/.+(?=\.\w+$)/)[0];
console.log(filename);
しかし、最善の方法はtest
、RegExp
オブジェクトのメソッドを使用して完全なファイル名を検証することだと思います。MSDNには、(ファイル拡張子を含む)のファイル名は、次の文字を含めることはできませんと言います。
次の予約文字:
- 未満(<)
- 大なり記号(>)
- コロン(:)
- 二重引用符( ")
- スラッシュ(/)
- バックスラッシュ(\)
- 垂直バーまたはパイプ(|)
- 疑問符(?)
- アスタリスク(*)
したがって、次の正規表現を使用して、NTFSファイルシステムとFATファイルシステムの両方のファイル名を検証できます。
var file = 'xxx.yyy.pdf',
isValid = /^[^<>:"/\\?*]+$/.test(file);
console.log(isValid );
あなたを助けるためのオンラインツールがあります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加