javascript - JavaScript 的正则表达式不起作用

标签 javascript node.js

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

  [ [ '@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 字符,那么您将在匹配数组中得到两个元素。它们都需要附加然后推送到您的列表中。

关于javascript - JavaScript 的正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36188507/

相关文章:

node.js - sequelize 中是否有更有效的批量更新方式?

node.js - node.js 的 IDE 和调试器

javascript - 为什么这个随机的、意外的水平线会出现在 IE7 中?

javascript - 验证长字符串是否有足够的可分割空间用于显示

javascript - 如何使用 parseFloat(0.00) 获取 float

javascript - Jest 模拟 document.createRange

javascript - 如何在nodejs中处理来自android的JSON

php - 编写 PHP 非阻塞应用程序

javascript - Bootstrap 切换选项卡无法正常工作

Javascript-添加所有文件扩展名