如何使用正则表达式和jQuery替换为具有两个单独替换字符串的两个单独的字符串?

时间:2012-08-11 00:12:16

标签: javascript jquery regex

我正在使用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);
})

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

2 个答案:

答案 0 :(得分: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); 
}) 

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

未测试:

val = val.replace(/:\)/g, function (s) { 
        var fn = s == ':)' ? 'smile' : 'frown';
        return '<img src="' + fn + '.png" />' 
      });

答案 1 :(得分: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);

});