2016-03-23 33 views
0

Bu dizi bir dizi var ve ben bu döngü içine almak ve her kelime vermek, ama "@", noktalama işaretleri ve hashtag'lerden sıyrılmak istiyorum. Ancak benim düzenli ifadem bazı kelimelerin diziden tamamen silinmesi ve neden emin değilim.javascript çalışmıyor Regex çalışmıyor

[ [ '@AIMEEE94x', 
     '@Arsenal_Geek', 
     '@Charlottegshore', 
     'shut', 
     'it', 
     'ha' ], 
    [ '"You', 
     'learn', 
     'so', 
     'much', 
     '@MesutOzil1088', 
     'and', 
     '@Alexis_Sanchez"', 
     '-', 
     '@alexiwobi:' ] ] 


    var regex = /\w+/g; 
    var listsb = []; 
    for (i = 0 ; i < tweetsA.length; i++) { 
     for(j = 0; j < tweetsA[i].length; j++){ 

      if (regex.test(tweetsA[i][j])== true){ 
       listsb = listsb.concat(tweetsA[i][j]) 
      }                         

     } 
    } 
    console.log(listsb); 

cevap

1

Diğer tüm karakterleri çıkarırsanız, yalnızca normal ifadeye karşı bir denetim yeterli olmaz. Kelimede eşleşen kesin deseni bulmanız gerekir. Bu JavaScript

var str = "@Alexis_Sanchez"; 
var regex = /\w+/g; 
var match = str.match(regex); //match = ['Alexis_Sanchez'] 
var str2 = "@alexwobi:"; 
var match2 = str2.match(regex); //match2 = ['alexwobi'] 

liste dizi içinde itilmesi gerekir maçın Bu değer, (eşleşme varsa) String match işlevi kullanılarak yapılır.

\ w meta karakteri, [A-Za-z0-9_] ile eşdeğerdir. Yani sizin için alt çizgiler çizmeyecek. Ayrıca, kelimenin ortasında olmayan bir karakteriniz varsa, eşleme dizisinde iki öğe alırsınız. Her ikisinin de eklenmesi ve listenizde yer alması gerekiyor.

0

Bunun için String.match()'u kullanmak daha kolay olmaz mıydı? Bunun gibi:

var regex = /\w+/g; 
var listsb = []; 
for (i = 0 ; i < tweetsA.length; i++) { 
    for(j = 0; j < tweetsA[i].length; j++){ 
    listb.push(tweetsA[i][j].match(regex)); //Will give you string stripped with regex characters.                       
    } 
} 
0

Yorumunuzdaki güncelleştirmeye dayalı yeni bir yanıt. Bu sürüm, bulunan tüm eşleşmelerden geçer ve bunları listenize ekler.

var regex = /\w+/g; 
var listsb = []; 
for (i = 0 ; i < tweetsA.length; i++) { 
    for(j = 0; j < tweetsA[i].length; j++) { 
     while((m = regex.exec(tweetsA[i][j])) != null) { 
      listsb = listsb.concat(m[0]); 
     } 
    } 
}