2016-10-26 19 views
-1

我有以下類型的字符串:尋找JS正則表達式,用於查找之間的數據。並且,或'

ns1.importantClassA,ns1.nonImportantClass 
ns2.importantClassB'1[ns2.nonImportantClass1,ns2.nonImportantClass2] 

我需要檢索的重要類(importantClassA,importantClassB)的名稱。

我已經創建了下面的代碼的時刻:

function getData(fullPath) 
{ 
    var retVal = fullPath; 
    var endIndex = retVal.indexOf(","); 
    var endIndexOption2 = retVal.indexOf("`"); 
    if (endIndexOption2 != -1 && endIndexOption2<endIndex) 
    { 
     endIndex = endIndexOption2; 
    } 

    if (endIndex != -1) 
    { 
     var startIndex = retVal.lastIndexOf('.',endIndex); 
     if (startIndex != -1) 
     { 
      retVal = retVal.substr(startIndex+1,endIndex-startIndex-1); 
     } 
    } 
    return retVal; 
} 

但顯然一個正則表達式將簡化它。 有什麼建議嗎?

+0

你'nonImportantClass1'也是之間'.'和',',所以正則表達式也相應挑這個,你需要給更多的規格,如果你想消滅'nonImportantClass1'在最終結果 –

回答

-1

試試這個正則表達式:

/.(\w+?)[\,|\']/g 

代碼: ''

const regex = /.(\w+?)[\,|\']/g; 
var str = "ns2.importantClassB'1[ns2.nonImportantClass1,ns2.nonImportantClass2]"; 
var found = str.match(regex); 
if (found !== null) { 
    var max = found.length; 
    for (var i = 0; i < max; i++) { 
     found[i] = found[i].replace(/[,|'|.]/g, ""); 

    } 
} 

匹配()返回正則表達式匹配的所有字符串(這個問題雖然是它包含了與 「'」 或「」這就是爲什麼我循環每場比賽,並以‘’替換的字符)。

如果你能找到一個更好的正則表達式,你也許可以省略循環的一部分!