LRCファイルを含む文字列の検証を取得しようとしています http://en.wikipedia.org/wiki/LRC_%28file_format%29
正規表現を使用して、ファイルの形式が正しいかどうかを確認します。[mm:ss.xx]で始まる行だけでなく、[mm:ss]も有効になります。これは、デフォルトでxx=00になるためです。
したがって、ファイルに表示される可能性のあるIDタグも含めて、ファイルが修正されているかどうかを返すという考えです。
前もって感謝します
LRCファイルを含む文字列の検証を取得しようとしています http://en.wikipedia.org/wiki/LRC_%28file_format%29
正規表現を使用して、ファイルの形式が正しいかどうかを確認します。[mm:ss.xx]で始まる行だけでなく、[mm:ss]も有効になります。これは、デフォルトでxx=00になるためです。
したがって、ファイルに表示される可能性のあるIDタグも含めて、ファイルが修正されているかどうかを返すという考えです。
前もって感謝します
ファイルのすべての行をループし、正規表現に対してテストして、構文と一致するかどうかを確認する必要があると思います。正規表現が失敗した場合は、明らかに戻りfalse
ます。適切な正規表現は、おそらく次のようなものです。
\[[0-9]{2}\:[0-9]{2}(\.[0-9]{2})?\]([\w:\s]+)
どちらが両方に一致します:
[00:29.02]Line 6 lyrics
[00:29]Line 6 lyrics
そして、歌詞を取得したい場合に備えて、2番目の一致するグループを提供します。
タグを照合するには、次の行に沿って正規表現が必要になる可能性があります。
\[([a-z]+)\:(.+)\]
どちらが一致します:
[au:Written by Kal Mann / Dave Appell, 1961]
[length: 2:23]
これは、タグ名に数字が含まれていないことを前提としていますが。タグ名と値の両方に対して2つのキャプチャグループを提供します。
あなたが望むことをするために、私はあなたが望む機能を示すと思うjsFiddleを作成しました。LRCデータが文字で区切られていることを前提としています\n
。方法の例は次のとおりです。
function test_LRC(str) {
var lyric_regex = /\[[0-9]{2}\:[0-9]{2}(\.[0-9]{2})?\](.+)/i;
var tag_regex = /\[([a-z]+)\:(.+)\]/i;
var LRC = str.split('\n');
var len = LRC.length;
var tags = [];
var valid = true;
for (var i = 0; i < len; i++) {
var line = LRC[i].trim();
if (line !== '') {
if (tag_regex.test(line)) {
var groups = tag_regex.exec(line);
tags.push({'tag': groups[1], 'value': groups[2].trim()});
} else if (!lyric_regex.test(line)) {
valid = false;
break;
}
}
}
return { 'valid': valid, 'tags': tags };
}