Javascript匹配上次@<;用户>;

Javascript匹配上次@<;用户>;,javascript,regex,twitter,Javascript,Regex,Twitter,我正在尝试为twitter用户名创建一个自动完成的函数 到目前为止,我有以下代码: function OnKeyUp(txtboxid){ var text = $('#'+txtboxid).val() var regex = '(^|\s)@(\w*[a-zA-Z_]+\w*)' var results = text.match(RegExp(regex, 'gm')) console.debug(results) } 问题是,它只匹配字符串开头的文本(例

我正在尝试为twitter用户名创建一个自动完成的函数

到目前为止,我有以下代码:

function OnKeyUp(txtboxid){
    var text = $('#'+txtboxid).val()
    var regex = '(^|\s)@(\w*[a-zA-Z_]+\w*)' 
    var results = text.match(RegExp(regex, 'gm'))
    console.debug(results)
}
问题是,它只匹配字符串开头的文本(例如:@yser)

我想要的是一个正则表达式,它可以处理这样一个字符串:“hello@user2、@user和@user3你好吗?”

我不知道如何做到这一点。 谷歌搜索了大约3个小时,仍然没有找到任何东西


另外,当用户名更改时,最好只保留最后一个用户名。

您的正则表达式很好。唯一的问题是,在解析字符串时,字符串中的反斜杠将被删除或替换,而不是由正则表达式解析器进行解释。您需要使用额外的反斜杠重新转义它们:

var regex = '(^|\\s)@(\\w*[a-zA-Z_]+\\w*)';
您通常应该使用正则表达式文本,而不是使用字符串和
RegEx
函数指定正则表达式。它由反斜杠(而不是双引号)分隔,并在末尾附加标志:

var results = text.match(/(^|\s)@(\w*[a-zA-Z_]+\w*)/gm);

你的正则表达式很好。唯一的问题是,在解析字符串时,字符串中的反斜杠将被删除或替换,而不是由正则表达式解析器进行解释。您需要使用额外的反斜杠重新转义它们:

var regex = '(^|\\s)@(\\w*[a-zA-Z_]+\\w*)';
您通常应该使用正则表达式文本,而不是使用字符串和
RegEx
函数指定正则表达式。它由反斜杠(而不是双引号)分隔,并在末尾附加标志:

var results = text.match(/(^|\s)@(\w*[a-zA-Z_]+\w*)/gm);