答案 0 :(得分:2)
您可以捕获@followedByName
,然后替换@
let str = `@someName hey @someMoreNames`
let op = str.match(/(^|\s)@\w+/g).map(e=>e.trim().replace(/@/g,''))
console.log(op)
答案 1 :(得分:2)
如果只需要从一条推文中提取用户,则可以使用以下正则表达式:
/@([a-zA-Z0-9]+)/g
例如:
var string = '@JohnSmith @DylanThompson Hey guys!';
var numberPattern = /@([a-zA-Z0-9]+)/g;
var res = string.match(numberPattern);
console.log(res);
这会吐出来:
["@JohnSmith", "@DylanThompson"]
答案 2 :(得分:1)
尝试
let str= "Here @ann and @john go to @jane";
let m= str.match(/@\w+/g).map(x=>x.replace(/./,''));
m.forEach(x=> console.log(x));
您还可以在正则表达式后面使用正向后视,但是Firefox yet不支持它(但它是ES2018的一部分):
let str= "Here @ann and @john go to @jane";
let m= str.match(/(?<=@)\w+/g);
m.forEach(x=> console.log(x));
其中(?<=@)\w+
与@后面的单词匹配(不包括此字符-positive lookbehind)
答案 3 :(得分:1)
您可以结合使用match
来提取名称和slice
来删除@
:
str = "@JohnSmith @DylanThompson Hey guys";
let arr = str.match(/@\w+/g).map(e=>e.slice(1));
console.log(arr);
答案 4 :(得分:0)
尝试一下:
var str= "Here @ann and @john go to @jane";
var patt = /@(\w+)/g;
while ( (arr = patt.exec(str)) !== null ) { console.log(arr[1]); }