-1
$("#idofreplybox").on('keyup, keydown',function(){
    var e = $(this).html();
    if (e.indexOf(@) !== -1){}else{
        var d = find all occurences of @
        var f = find the next whitespace after that @
        change the text between var d and var f to blue
    }
});

このコードを使用すると、誰かがと入力@steveすると、その名前が青色に変わります。ただし、コード ブロック内のテキストを JavaScript コードに変更するために必要な正規表現がわかりません。

これが当たり前のように思われる場合は申し訳ありませんが、私は正規表現初心者なので、何を書く必要があるかわかりません。

どんな助けでも大歓迎です。

4

2 に答える 2

1

@dystroy の正規表現を使用する:

    (function($){
$("#idofreplybox").keyup(function(){
    var e = $(this).html();

    if (e.length && /@(\w+)\b/.test(e)){
        e = e.replace(/@(\w+)\b/g, '<span style="color: blue;">$1</span>');
        $(this).html(e);
    } else {

    }
});}
)(jQuery);

ただし、テキストボックス内で html を使用したり、コンテンツの編集可能な要素を使用したり、テキストボックスとして機能するプロキシ/ダミーを使用したり、コンテンツ/html を div にコピーしたりすることはできないことに注意してください。

働くフィドル

$1 は最初の括弧 () の一致を参照し、$2 は 2 番目の一致などを参照します。

于 2013-11-13T13:32:22.567 に答える
1

\b単語境界に使用します。

例えば ​​:

"test @username bla bla".replace(/@(\w+)\b/g, "<span class=user>$1</span>")

与える

"test <span class=user>username</span> bla bla"
于 2013-11-13T13:29:28.807 に答える