我有一个段落可能有一个或多个" @"后跟不同的用户名。如何在Javascript中找到每个这样的实例?
这样的东西,但它还没有工作:
var regexp = '/@([a-z0-9_]+)/i';
var post = "Hi @tom, where is @john and @nick?" ;
var match, matches = [];
while ((match = regexp.exec(post)) != null) {
matches.push(match.index);
}
console.log(matches);
控制台日志会显示为: @tom @john @nick
答案 0 :(得分:2)
您的代码中有两个错误,导致它无法按预期工作。
(1.
)您需要从正则表达式中删除引号并使用g
(全局)修饰符。您可以将字符类替换为较短的版本\w
,并在此处删除不区分大小写的修饰符。
var regexp = /@\w+/g
(2.
)您需要引用匹配而不是引用匹配。index
matches.push(match[0]);
最终解决方案:
var post = "Hi @tom, where is @john and @nick?";
var regexp = /@\w+/g
var match, matches = [];
while ((match = regexp.exec(post)) != null) {
matches.push(match[0]);
}
console.log(matches); //=> [ '@tom', '@john', '@nick' ]
或者,您可以使用字符串。match
方法。
var post = 'Hi @tom, where is @john and @nick?',
result = post.match(/@\w+/g);
console.log(result); //=> [ '@tom', '@john', '@nick' ]