2011-11-12 4 views
1

私はtwitterユーザー名の自動補完機能を作ろうとしています。Javascript match last @<User>

はこれまでのところ、私は、次のコードを持っている:

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はどうですか?"

私はこれを達成する方法がわかりません。 Googleで約3時間前に検索されましたが、まだ何も見つかりませんでした。

さらに、最後のユーザー名が変更されたときにはそれだけが役に立ちます。

答えて

1

正規表現は正常です。唯一の問題は、文字列内のバックスラッシュは、正規表現パーサによって解釈されるのではなく、文字列が解析されるときに削除または置き換えられることです。あなたは、余分なバックスラッシュでそれらのそれぞれを再エスケープする必要があります。

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

代わりに文字列とRegEx機能付き正規表現を指定する、あなたは通常、正規表現リテラルを使用する必要があります。二重引用符ではなくバックスラッシュで区切られ、最後にフラグが付加されます。

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

ありがとうございます:) – Brantje

関連する問題