Javascript匹配最后@ <user> </user>

时间:2011-11-12 03:25:21

标签: 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)
}

问题是,它只匹配字符串开头的文本(例如:@yser)

我想要的是一个正则表达式,可以加工像这样的字符串&#34;你好@ user2,@ user和@ user3你好吗&#34;

我不知道如何做到这一点。 现在搜索谷歌约3个小时,仍然没有找到。

此外,只有最后一个用户名更改后才会很棒。

1 个答案:

答案 0 :(得分:1)

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

var regex = '(^|\\s)@(\\w*[a-zA-Z_]+\\w*)';

您应该使用正则表达式文字,而不是使用字符串和RegEx函数指定正则表达式。它由反斜杠而不是双引号分隔,标志附加到结尾:

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