只获得最后一场比赛?.match(字)

Ric*_*Joe 6 javascript jquery

我有一个正则表达式从textarea获取@user.当用户用@键入内容时,我会得到它.

我的问题是,我想得到最后一场比赛,而不是所有比赛.

例如:

用户类型:

@josh and @marie = want to show @marie
@josh loves @marie and @anne = show @anne
Run Code Online (Sandbox Code Playgroud)

我的代码显示如下:

@josh,@marie,@anne
Run Code Online (Sandbox Code Playgroud)

我可以获得最后一个@something条目吗?(当用户打字时)

var word=/@(\w+)/ig;

$("#comment").on("keyup",function() {

    var content = $(this).val();
    var name = content.match(word);
    var dataString = name;

    if(name.length > 0) {
        $("#result").text(name);
    }
    return false();
});
Run Code Online (Sandbox Code Playgroud)

HTML

<textarea id=comment>@josh and @marie</textarea>
<div id=result></div>
Run Code Online (Sandbox Code Playgroud)

https://jsfiddle.net/dcs5pat8/(按textarea)

Me.*_*ame 4

除了获取所有匹配项并获取最后一个匹配项之外,您还可以使用捕获组来获取最后一个匹配项:

var word=/.*(@\w+)/i;
var name = content.match(word)[1];  
Run Code Online (Sandbox Code Playgroud)

或者使用 exec,整体看起来像:

var word=/.*(@\w+)/i;

$("#comment").on("input",function() { //changed keyup to input

var content=$(this).val();
var match = word.exec(content); 

if(match){
 $("#result").text(match[1]);
}

});
Run Code Online (Sandbox Code Playgroud)

小提琴

PS,如果您的目标是一种更通用的方法,并且您需要在获取所有单词和单个单词之间切换,我建议保留全局匹配并获取最后一个,如乔纳斯的答案所示。