我有一个评论字符串,用户可以输入" @ someusername"评论中的任何地方。发生这种情况时,将显示用户列表,直到在用户名末尾键入空格。我有一个正在运行的正则表达式,除了当@符号单独输入时我无法返回true。我必须输入@然后输入另一个字符才能返回true。所以基础知识是,我需要一个正则表达式,如果和while时将返回true:
现在我有以下内容:
$scope.userList = function(comment) {
pattern = /(?:^|\s)@\S+$/;
if(pattern.test(comment)) {
$scope.usersShow = true;
}
else {
$scope.usersShow = false;
}
};
除非在我提到的方式输入@时立即返回true,否则它将起作用,并且在用户名后输入空格和字符之前它不会关闭。非常感谢任何帮助。
答案 0 :(得分:1)
您应该将正则表达式更改为:/^|\s)@\S*$/
。在\ S之后的*表示“最后一个字符的零或更多”,而你有一个+是“最后一个字符中的一个或多个。”
答案 1 :(得分:0)
以下是基于上述答案和我做过的一些调整的完整解决方案:
HTML:
input.comment-text ng-model="comment.text" ng-change="showUserList(comment.text) ng-trim="false"
JS:
$scope.showUserList = function(comment) {
var pattern = /(?:^|\s)@\S*$/;
$scope.usersShow = pattern.test(comment);
};