for cycle和RegExp

时间:2017-01-04 19:20:28

标签: javascript jquery regex for-loop

所以我试图做一个函数将消息转换为带有正则表达式的表情符号。然后我做了这个功能,但它不起作用。有提示吗?

HTML

<span class="message-text">:D</span>

的Javascript

function check() {
        var allreg ={
            "/:D/": "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/18/2f/182fa3786046d170707fa46a257185cb.png'>'",
            "/:C/": "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/c5/a5/c5a5a52fa1633e19ab2648f23ab1ee37.png'>'",
            "/8+[)]/": "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/c1/2c/c12c7f3797ed8fcdcbedffb2649abfb1.png'>'",
            "/:O/": "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/55/af/55af488f029266842c13a54d4c50fc11.png'>'",
            "/:+[)]/": "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/be/22/be22105632cfc32abf7b24bed3924e12.png'>'",
            "/._./": "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/ce/1a/ce1a33d6a4535ce73c8b2b899d51071b.png'>'",
            "/:heart:/": "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/3e/f0/3ef0aeaf797844b672df6198c53ba479.png'>'",
            "/:P/": "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/43/be/43be98eee74f44eddec9c3137b1edf28.png'>'",
            "/;P/": "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/7e/d5/7ed517c9f335c3171b6f92685514667a.png'>'",
            "/;+[)]/": "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/58/be/58be1ae13dbf3fb471f7f598a0365734.png'>'",
            "/:+[(]/": "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/0c/04/0c04f9fd77dc486724c269587028e7d2.png'>'",
            "/.-./": "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/e6/7c/e67c860bd5cd2b9b443516171ec3c6a3.png'>'",
            "/-.-/": "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/c1/05/c105ab901e2fa6e67b38879bcc0ac0b0.png'>'",
            "/:pepe:/": "'<img width='32px' height='32px' src='https://i.imgur.com/OE9Jb7b.png'>'"
        }
        var emval = [':D',':C','8)',':O',':)','._.',':heart:',':P',';P',';)',':(','.-.','-.-',':pepe:'];
        for(var emoticon in allreg){
        var result = new RegExp(emoticon,'g'); 
        for(var i=0;i<=13;i++){
         $(".message-text:contains('"+emval[i]+"')").html(function (_,html) {
            return html.replace(result,allreg[emoticon]);
            });
           }
        }
    }
    check();

1 个答案:

答案 0 :(得分:2)

  

RegExp构造函数为其创建正则表达式对象   将文本与模式匹配。

在构造函数中,您必须传递正则表达式的文本。

new RegExp(":D",'g')

allreg对象的键不需要斜杠,因为你破坏了正则表达式。

 var allreg ={ ':D': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/18/2f/182fa3786046d170707fa46a257185cb.png'>'"}

function checkemoji() {
            var allreg ={
                ':D': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/18/2f/182fa3786046d170707fa46a257185cb.png'>'",
                ':C': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/c5/a5/c5a5a52fa1633e19ab2648f23ab1ee37.png'>'",
                '8+[)]': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/c1/2c/c12c7f3797ed8fcdcbedffb2649abfb1.png'>'",
                ':O': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/55/af/55af488f029266842c13a54d4c50fc11.png'>'",
                ':+[)]': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/be/22/be22105632cfc32abf7b24bed3924e12.png'>'",
                '._.': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/ce/1a/ce1a33d6a4535ce73c8b2b899d51071b.png'>'",
                ':heart:': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/3e/f0/3ef0aeaf797844b672df6198c53ba479.png'>'",
                ':P': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/43/be/43be98eee74f44eddec9c3137b1edf28.png'>'",
                ';P': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/7e/d5/7ed517c9f335c3171b6f92685514667a.png'>'",
                ';+[)]': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/58/be/58be1ae13dbf3fb471f7f598a0365734.png'>'",
                ':+[(]': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/0c/04/0c04f9fd77dc486724c269587028e7d2.png'>'",
                '.-.': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/e6/7c/e67c860bd5cd2b9b443516171ec3c6a3.png'>'",
                '-.-': "'<img width='32px' height='32px' src='http://emojipedia-us.s3.amazonaws.com/cache/c1/05/c105ab901e2fa6e67b38879bcc0ac0b0.png'>'",
                ':pepe:': "'<img width='32px' height='32px' src='https://i.imgur.com/OE9Jb7b.png'>'"
            }
            var emval = [':D',':C','8)',':O',':)','._.',':heart:',':P',';P',';)',':(','.-.','-.-',':pepe:'];
            for(var emoticon in allreg){
            var result = new RegExp(emoticon,'g'); 
            for(var i=0;i<=13;i++){
             $(".message-text:contains('"+emval[i]+"')").html(function (_,html) {
                return html.replace(result,allreg[emoticon]);
                });
               }
            }
        }      
checkemoji();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span class="message-text">:D  :C :O</span>