我试图为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)
我想要的是一个正则表达式,可以加工像这样的字符串"你好@ user2,@ user和@ user3你好吗"
我不知道如何做到这一点。 现在搜索谷歌约3个小时,仍然没有找到。
此外,只有最后一个用户名更改后才会很棒。
答案 0 :(得分:1)
你的正则表达式很好。唯一的问题是,在解析字符串时,字符串中的反斜杠将被删除或替换,而不是由正则表达式解析器解释。你需要使用额外的反斜杠重新逃避它们:
var regex = '(^|\\s)@(\\w*[a-zA-Z_]+\\w*)';
您应该使用正则表达式文字,而不是使用字符串和RegEx
函数指定正则表达式。它由反斜杠而不是双引号分隔,标志附加到结尾:
var results = text.match(/(^|\s)@(\w*[a-zA-Z_]+\w*)/gm);