1

私はjQueryを使って次のようなことを試しています:

$('input').keyup(function(e){
    var val = $(this).val();

    var smileString = val.replace(/[:][)]/g, '<img src="smile.png" />');
    $('#regexoutput').html(smileString);

    var frownString = val.replace(/[:][(]/g, '<img src="frown.png" />');
    $('#regexoutput').html(frownString);
})

1つの式でそれを行う方法はありますか? 上記のコードは、下部の置換のみでのみ機能します。

4

2 に答える 2

1

私はあなたが欲しいと思います

$('input').keyup(function(e){ 
    var val = $(this).val(); 

    val = val.replace(/[:][)]/g, '<img src="smile.png" />');  
    val = val.replace(/[:][(]/g, '<img src="frown.png" />'); 

    $('#regexoutput').html(val); 
}) 

replace2 番目の引数を一致文字列を検査して正しい結果を返す関数にする と、1 つの操作で実行することもできます。

未テスト:

val = val.replace(/:\)/g, function (s) { 
        var fn = s == ':)' ? 'smile' : 'frown';
        return '<img src="' + fn + '.png" />' 
      });
于 2012-08-11T00:31:28.367 に答える
1
$('input').keyup(function(e){
    var val = $(this).val();

    var smileString = val.replace(/[:][)]/g, '<img src="smile.png" />').
        replace(/[:][(]/g, '<img src="frown.png" />');

    $('#regexoutput').html(smileString);

});
于 2012-08-11T00:32:03.150 に答える