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