1
var test = "Hello all, this is a message and i want to mention @john, @smith and @jane...";

我想要得到的是:

var result = ["john", "smith", "jane"];

我可以取字符串中的最后一个用户名,但不是全部。我可以使用正则表达式或其他字符串函数。

谢谢你。

4

3 回答 3

1

试试这个正则表达式

/(^|\W)@\w+/g

JavaScript:

var test = "Hello all, this is a message and i want to mention @john, @smith and @jane";  
var names = test.match(/(^|\W)@\w+/g);
console.log(names);

结果:

0: "@john"
1: "@smith"
2: "@jane"

RegExr上的实时示例: http: //regexr.com?36t6g

于 2013-10-24T14:51:28.990 回答
1
var test = "Hello all, this is a message and i want to mention @john, @smith and @jane...";  
var patt = /(^|\s)@([^ ]*)/g;
var answer = test.match(patt)

应该得到你想要的

像这个JSfiddle

于 2013-10-24T14:53:57.437 回答
1

似乎不可能使用单个正则表达式:

var result = test.match(/@\w+/g).join('').match(/\w+/g);

您可能需要处理正则表达式一无所获的情况:

var result = test.match(/@\w+/g);
result = result ? result.join('').match(/\w+/g) : [];
于 2013-10-24T15:10:35.803 回答