単純なパターンは次のようになりますm.*r.*i.*e.*
。ただし、拡張子が .js のファイルだけを照合する必要はなく、パターン マッチングは拡張子ではなくファイル名のみを照合する必要があると想定しています。この場合、拡張機能にこれらの文字が含まれていると、簡略化されたパターンが問題を引き起こします。
考察の材料: 次のパターンはどうでしょうか?
m[a-z0-9\-_]*?r[a-z0-9\-_]*?i[a-z0-9\-_]*?e[a-z0-9\-_]*?\.[a-z]+
パターンの機能の簡単な説明:
- m、r、i、e が正しい順序になるようにします
- それぞれの間に 0 個以上の文字 (英数字とアンダースコア) を入れることができます。の用法 '?' 遅延選択を示します。エンジンは次に進む前に、最小数の文字に一致させようとします。
ただし、このパターンでは、英数字とアンダースコア文字のみを受け入れることも前提としています。他の文字を含めたい場合は、角括弧の間にさらに記号を追加できます (ただし、重要なものは忘れずにエスケープしてください)。
JS でマッチングを行うには、以下を使用できます。
var patt = /m[a-z0-9\-_]*?r[a-z0-9\-_]*?i[a-z0-9\-_]*?e[a-z0-9\-_]*?\.[a-z]+/gi;
if(fileName.match(patt)) {
// If there is a match
} else {
// If there is no match
}
[編集] OPは、強調表示された文字を太字にすることができるかどうかを尋ねました. 関数の使用を提案しました.replace()
:
var patt = /m([a-z0-9\-_]*?)r([a-z0-9\-_]*?)i([a-z0-9\-_]*?)e([a-z0-9\-_]*\.[a-z]+)/gi;
var newFileName = fileName.replace(patt, "<strong>m</strong>$1<strong>r</strong>$2<strong>i</strong>$3<strong>e</strong>$4");
完全を期すために、ここに概念実証のフィドルがあります;)