文字列が有効なファイル名であることを確認するために使用する必要がある (JavaScript) 正規表現は何ですか?

StackOverflow https://stackoverflow.com/questions/130837

  •  02-07-2019
  •  | 
  •  

質問

現時点ではまだ RegEx を学習中ですが、当面は誰かがこれを手伝ってくれませんか?文字列のフォーマットにはいくつかの特別な要件があります。

  1. ディレクトリはありません。ファイル名だけ。
  2. ファイル名はすべて小文字にする必要があります。
  3. 空白はアンダースコアに置き換える必要があります。

難しいことではないはずですが、時間に追われているので、ファイル名が有効であることを確認する「正しい」方法がわかりません(つまり、ファイル名として無効であるはずの文字を忘れてしまいます)。

役に立ちましたか?

解決

RegExp と他の JavaScript の簡単な組み合わせをお勧めします。

var a = "c:\\some\\path\\to\\a\\file\\with Whitespace.TXT";
a = a.replace(/^.*[\\\/]([^\\\/]*)$/i,"$1");
a = a.replace(/\s/g,"_");
a = a.toLowerCase();
alert(a);

他のヒント

非常に急いでいる場合は、通常、次のライブラリで使用できる正規表現を見つけることができます。 http://regexlib.com/。次のように編集します: あなたに役立つかもしれないものは次のとおりです.

ユーザーから文字列パスを取得している場合 (例:ファイル アップロード フィールドの .value を読み取ることによって)、パス区切り文字が何であるかを実際に確認することはできません。古いまたは不明瞭な OS では、バックスラッシュ (Windows)、スラッシュ (Linux、OS X、BSD など)、またはまったく別のものである可能性があります。スラッシュまたはバックスラッシュでパスを分割することで一般的なケースはカバーされますが、推測が間違っていた場合に備えて、ユーザーがファイル名をオーバーライドできる機能を含めることをお勧めします。

「無効な文字」に関しては、これもオペレーティング システムによって異なります。おそらく最も簡単な方法は、英数字以外の文字をすべてアンダースコアなどのプレースホルダーに置き換えることです。

私が使用しているものは次のとおりです。

var parts= path.split('\\');
parts= parts[parts.length-1].split('/');
var filename= parts[parts.length-1].toLowerCase();
filename= filename.replace(new RegExp('[^a-z0-9]+', 'g'), '_');
if (filename=='') filename= '_'

をチェックしてみます 正規表現ライブラリ.

ニーズに合わせて、さまざまな堅牢性の事前構成された正規表現を任意の数から選択できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top