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

前端之家收集整理的这篇文章主要介绍了javascript – 只获得最后一场比赛? .match(字)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个正则表达式从textarea获取@user.当用户用@键入内容时,我会得到它.

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

例如:

用户类型:

@josh and @marie = want to show @marie
@josh loves @marie and @anne = show @anne

我的代码显示如下:

@josh,@marie,@anne

我可以获得最后一个@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();
});

HTML

<textarea id=comment>@josh and @marie</textarea>
<div id=result></div>

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

解决方法

除了获得所有匹配并获得最后一个匹配之外,您还可以使用捕获组来获取最后一个匹配:
var word=/.*(@\w+)/i;
var name = content.match(word)[1];

或者使用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]);
}

});

Fiddle

PS,如果你的目标是更通用的方法,并且你需要在获取所有单词和单个单词之间切换,我建议保持全局匹配并在Jonas的答案中得到最后一个.

猜你在找的JavaScript相关文章