javascript-replace

文档语法:

stringObject.replace(regexp/substr,replacement)

解释说明

第一个参数是RegExp对象或者字符串,第二个参数是字符串或者是函数,
常用的第二个参数是字符串,今天给web应用集成emoji,第二个参数用到了函数。
emoji集成方案有很多,我选用了jquery-emojigit地址

添加emoji表情

<textarea class="textarea thumbnail" id="textarea"></textarea>
 $().ready(function () {

        $("#textarea").emoji({
            showTab: true,
            animation: 'fade',
            icons: [{
                name: "贴吧表情",
                path: "dist/img/tieba/",
                maxNum: 50,
                file: ".jpg",
                placeholder: ":{alias}:",
                alias: {
                    1: "hehe",
                    2: "haha",
                    3: "tushe",
                    4: "a",
                    5: "ku",
                    6: "lu",
                    7: "kaixin",
                    8: "han",
                    9: "lei",
                    10: "heixian",
                    11: "bishi",
                    12: "bugaoxing",
                    13: "zhenbang",
                    14: "qian",
                    15: "yiwen",
                    16: "yinxian",
                    17: "tu",
                    18: "yi",
                    19: "weiqu",
                    20: "huaxin",
                    21: "hu",
                    22: "xiaonian",
                    23: "neng",
                    24: "taikaixin",
                    25: "huaji",
                    26: "mianqiang",
                    27: "kuanghan",
                    28: "guai",
                    29: "shuijiao",
                    30: "jinku",
                    31: "shengqi",
                    32: "jinya",
                    33: "pen",
                    34: "aixin",
                    35: "xinsui",
                    36: "meigui",
                    37: "liwu",
                    38: "caihong",
                    39: "xxyl",
                    40: "taiyang",
                    41: "qianbi",
                    42: "dnegpao",
                    43: "chabei",
                    44: "dangao",
                    45: "yinyue",
                    46: "haha2",
                    47: "shenli",
                    48: "damuzhi",
                    49: "ruo",
                    50: "OK"
                },
                title: {
                    1: "呵呵",
                    2: "哈哈",
                    3: "吐舌",
                    4: "啊",
                    5: "酷",
                    6: "怒",
                    7: "开心",
                    8: "汗",
                    9: "泪",
                    10: "黑线",
                    11: "鄙视",
                    12: "不高兴",
                    13: "真棒",
                    14: "钱",
                    15: "疑问",
                    16: "阴脸",
                    17: "吐",
                    18: "咦",
                    19: "委屈",
                    20: "花心",
                    21: "呼~",
                    22: "笑脸",
                    23: "冷",
                    24: "太开心",
                    25: "滑稽",
                    26: "勉强",
                    27: "狂汗",
                    28: "乖",
                    29: "睡觉",
                    30: "惊哭",
                    31: "生气",
                    32: "惊讶",
                    33: "喷",
                    34: "爱心",
                    35: "心碎",
                    36: "玫瑰",
                    37: "礼物",
                    38: "彩虹",
                    39: "星星月亮",
                    40: "太阳",
                    41: "钱币",
                    42: "灯泡",
                    43: "茶杯",
                    44: "蛋糕",
                    45: "音乐",
                    46: "haha",
                    47: "胜利",
                    48: "大拇指",
                    49: "弱",
                    50: "OK"
                }
            }, {
                path: "dist/img/qq/",
                name: "qq表情",
                maxNum: 91,
                excludeNums: [41, 45, 54],
                file: ".gif",
                placeholder: "#qq_{alias}#"
            }]
        });


//        $("#textarea").emoji({
//            button: "#btn",
//            showTab: false,
//            animation: 'slide',
//            icons: [{
//                name: "QQ表情",
//                path: "dist/img/qq/",
//                maxNum: 91,
//                excludeNums: [41, 45, 54],
//                file: ".gif"
//            }]
//        });
    })

emoji表情解析
虽然有官方的解析方法,自己写了个

 //放到全局变量 避免重复定义
        var alias = {
            1: "hehe",
            2: "haha",
            3: "tushe",
            4: "a",
            5: "ku",
            6: "lu",
            7: "kaixin",
            8: "han",
            9: "lei",
            10: "heixian",
            11: "bishi",
            12: "bugaoxing",
            13: "zhenbang",
            14: "qian",
            15: "yiwen",
            16: "yinxian",
            17: "tu",
            18: "yi",
            19: "weiqu",
            20: "huaxin",
            21: "hu",
            22: "xiaonian",
            23: "neng",
            24: "taikaixin",
            25: "huaji",
            26: "mianqiang",
            27: "kuanghan",
            28: "guai",
            29: "shuijiao",
            30: "jinku",
            31: "shengqi",
            32: "jinya",
            33: "pen",
            34: "aixin",
            35: "xinsui",
            36: "meigui",
            37: "liwu",
            38: "caihong",
            39: "xxyl",
            40: "taiyang",
            41: "qianbi",
            42: "dnegpao",
            43: "chabei",
            44: "dangao",
            45: "yinyue",
            46: "haha2",
            47: "shenli",
            48: "damuzhi",
            49: "ruo",
            50: "OK"
        };
        var arr = [];
        for (var i in alias) {
            if (alias.hasOwnProperty(i)) { //filter,只输出man的私有属性
                arr[alias[i]] = i;
            }
            ;
        }


        var reg = new RegExp(/\:(\w+)\s*\:/);
        var reg2 = new RegExp(/\#qq_(\d+)\s*\#/);

        function parseContent(content) {
            if (reg.test(content)) {
                var content1 = content.replace(/\:(\w+)\s*\:/, function (wd, s1) {
                    return "<img style='width: 30px;height: 30px;' src='dist/img/tieba/" + arr[s1] + ".jpg'>";
                });


                return parseContent(content1);
            }
            else if (reg2.test(content)) {
                var content1 = content.replace(/\#qq_(\d+)\s*\#/, function (wd, s1) {
                    console.log(wd + "+" + s1);
                    return "<img style='width: 30px;height: 30px;' src='dist/img/qq/" + s1 + ".gif'>";
                });


                return parseContent(content1);
            }
            else {
                return content;
            }
        }
 var content1 = content.replace(/\#qq_(\d+)\s*\#/, function (wd, s1) {
                    console.log(wd + "+" + s1);
                    return "<img style='width: 30px;height: 30px;' src='dist/img/qq/" + s1 + ".gif'>";
                });

其中

replacement参数使用函数的话第一个参数是匹配的字符串,第二个第三个是如果正则使用\s匹配的元素,这里有正则的知识复习了一下\s,贪婪模式等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值