ファイル名やディレクトリ名に使用できない文字が含まれていないかチェックするために、正規表現を使ったのでまとめておく。
正規表現
正規表現とは、特殊な文字や記号を使っていくつかの文字列を1つの文字列で表現する方法のこと。今回正規表現の記号と意味についての紹介は省略します。JavaScriptで正規表現を使う方法は2種類ある。
■ 正規表現リテラル
・スラッシュ(/)の中に正規表現パターンを直接指定する。
・正規表現のパターンが変化しない時に使用。
■ RegExpのコンストラクタ
・RegExp()
の引数に正規表現パターンを直接指定する。
・外部からの入力など正規表現パターンが変化する場合に使用。
const pattern = new RegExp(<正規表現パターン>);
実装
1.正規表現パターンの指定
今回は、ファイル名やディレクトリ名に使用できない文字は固定なので、正規表現リテラルを使用した。名前に指定できない文字は「/:*?"<>|」の9種類なので、正規表現リテラルを使用して以下と書いた。
const pattern = /[\\\/:\*\?\"<>\|]/;
ここで、[]
は[]内のいずれか任意の1文字と一致することを意味している。
さらに、「*」や「?」などは特殊文字として認識されないように「\」を付加して記述する必要がある。これをエスケープ処理という。
2.正規表現パターンとの比較
正規表現には、match
やreplace
などのメソッドが用意されている。
今回は、test
メソッドを使って正規表現パターンとの比較を行った。
test
は、引数で指定された文字に正規表現パターに一致する文字があれば、true。なければfalseを返す。書き方としては、以下となる。
正規表現パターン.test(比較対象の文字列);
これを用いて比較を行った。以上を使ってチェックする関数を書いてみた。
function checkNameFormat(name) {
const pattern = /[\\\/:\*\?\"<>\|]/;
return pattern.test(name);
}
まとめ
正規表現を使ったファイル名やディレクトリ名に使用できない文字が含まれていないかチェックする方法をまとめてみた。まだ理解しきれていない所があり、誤りがあるかもしれないが今後修正を行っていきたい。