正则表达式字符识别
Regex character recognition
>我有一个注释字符串,用户可以在其中的注释中的任何位置键入"@someusername"。发生这种情况时,将显示用户列表,直到在用户名末尾键入空格。我有一个正常工作的正则表达式,只是当 @ 符号自行输入时我无法让它返回 true。我必须输入@,然后输入另一个字符才能使其返回true。所以基础知识是,我需要一个正则表达式,它将在以下情况下返回 true:
- @ 在注释的开头键入
- @ 是键入的,前面有一个空格(所以他们可以键入 test@test.com 并且它不会返回 true)
- 之后 @ 可以接受任何字符,但在键入空格时将关闭
现在我有以下内容:
$scope.userList = function(comment) {
pattern = /(?:^|'s)@'S+$/;
if(pattern.test(comment)) {
$scope.usersShow = true;
}
else {
$scope.usersShow = false;
}
};
这有效,除了在以我提到的方式键入@时立即返回true,并且在用户名后键入空格和字符之前它不会关闭。任何帮助都非常感谢。
您应该
将正则表达式更改为:/^|'s)@'S*$/
。''S 后面的 * 表示"最后一个字符的零个或多个",而您有一个 +,它是"最后一个字符中的一个或多个"。
这是基于上述答案和我所做的一些调整的完整解决方案:
.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);
};
相关文章:
- 匹配字符串中任意位置的 3 个字符的正则表达式
- Javascript 中带有停止字符的正则表达式
- 字母数字字符的正则表达式和 - / 仅
- Javascript:测试单个字符在正则表达式字符串中找到
- 用于去除除科学记数法以外的所有非数字字符的正则表达式
- 重音字符和正则表达式
- 用于匹配重复字符的正则表达式
- 第一个字符的正则表达式在 JavaScript 中不能是空格
- 检查字符串中是否存在至少 3 个不同字符的正则表达式
- 特殊字符的正则表达式
- 接受 4 个具有不同模式的字符的正则表达式
- 用于删除两个“”之间的字符的正则表达式是什么/"在javascript中
- 用于排除具有多行匹配的某些字符的正则表达式
- 如何创建从任意字母到特定字符的正则表达式
- 用于验证一组特殊字符的正则表达式
- 在c# Asp.net中验证文本框只包含英文字符的正则表达式
- 带有特殊字符的正则表达式
- 如何在脚本中识别正则表达式是否为空
- 在JavaScript中为特殊字符编写正则表达式
- 需要识别正则表达式中的不匹配字符