我有这个数组数组,我想循环遍历它并给出每个单词,但去掉“@”、标点符号和主题标签。然而,我的正则表达式从数组中完全删除了一些单词,我不知道为什么。

  [ [ '@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); 

请您参考如下方法:

如果您想删除所有其他字符,那么仅检查正则表达式是不够的。您需要找到与该单词匹配的确切模式。这是使用 javascript 中字符串的 match 函数完成的

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'] 

这个匹配值(如果匹配存在)应该被推送到列表数组中。

\w 元字符相当于 [A-Za-z0-9_]。所以它不会为你去掉下划线。此外,如果单词中间有一个非\w 字符,那么您将在匹配数组中得到两个元素。它们都需要附加然后推送到您的列表中。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!