2016-10-26 12 views
-1

が、私は次のタイプの文字列を持っている:間にデータを見つけるJS Regexを探しています。そして、または「

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'も' .'と '、'の間にあるので、regexはこれに応じてこれを選択します。最終結果で '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, ""); 

    } 
} 

マッチ() "'" 問題はしかし、それが含まれている(正規表現にマッチしたすべての文字列を返し、または"、"それで、私は各試合をループし、それらのキャラクターを ""で置き換えたのです)。

より良い正規表現が見つかる場合は、ループ部分を省略することができます!

関連する問題