我有一个正则表达式从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)
除了获取所有匹配项并获取最后一个匹配项之外,您还可以使用捕获组来获取最后一个匹配项:
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,如果您的目标是一种更通用的方法,并且您需要在获取所有单词和单个单词之间切换,我建议保留全局匹配并获取最后一个,如乔纳斯的答案所示。