我有一个正则表达式从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]); } });
PS,如果你的目标是更通用的方法,并且你需要在获取所有单词和单个单词之间切换,我建议保持全局匹配并在Jonas的答案中得到最后一个.