我一直在試圖讓其中包含AA串的核查LRC文件 http://en.wikipedia.org/wiki/LRC_%28file_format%29驗證用正則表達式在JavaScript
,並想通過正則表達式LRC文件,驗證文件的格式,其正確與否。 這將是有效的,不僅僅是以[mm:ss.xx]開頭的行,而且也是[mm:ss],因爲它將默認爲xx = 00
所以,如果文件其更正與否,包括 也可能出現在文件中的ID標籤。
在此先感謝
我一直在試圖讓其中包含AA串的核查LRC文件 http://en.wikipedia.org/wiki/LRC_%28file_format%29驗證用正則表達式在JavaScript
,並想通過正則表達式LRC文件,驗證文件的格式,其正確與否。 這將是有效的,不僅僅是以[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
而且你要搶的歌詞給你一個第二匹配組的情況。
匹配的標籤,你可能想的線沿線的一個正則表達式:
\[([a-z]+)\:(.+)\]
將匹配:
[au:Written by Kal Mann/Dave Appell, 1961]
[length: 2:23]
雖然這個假設有在標籤名稱沒有數字。它爲您提供了兩個標籤名稱和值的捕獲組。
爲了做到你想要的,我創建了一個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 };
}
謝謝它真的有幫助!這正是我正在尋找的! 我只是調整了一點正則表達式來更好地驗證它是這樣的:var lyricregex = \ [([0-9] {1} | [0-9] {2})\:[0-9] {2 }(\。[0-9] {2})?\]([\ w:\ s] +)' 'tag_regex =(\ [((ar)|(a)|(al)|(ti )|(AU)|(由))\:(+)\] | \ [(長度):([0-9]。{1} | [0-9] {2})\:[0-9 ] {2} \] | \ [(偏移):([ - 0-9] *)\])' – 2013-02-12 12:38:50
它怎麼會驗證這個正則表達式, 它會是這樣的問題:\ [?[\ S \ S * \]這個時候它給出成爲[]之間的信息,但它不足以適用於所有行和其他條件 – 2013-02-12 12:07:36