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);
})

有没有办法用一个表达式来做到这一点?上面的代码仅适用于底部替换。

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); 
}) 

replace如果您使第二个 arg 成为检查匹配字符串并返回正确结果的函数, 您也可以通过一个操作来执行此操作。

未经测试:

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 回答