javascript - 一个关于JS的正则匹配问题
高洛峰
高洛峰 2017-04-10 15:43:21
[JavaScript讨论组]

尝试着写了一个简单的JQ 插件,是关于GitHub的, 代码在:https://github.com/rccoder/GitHub-Card

但是我发现默认加载的图片太大了,加上其他的种种原因,有点吃不消,发现通过url可以改变图片的大小,比如:

https://avatars3.githubusercontent.com/u/7554325?v=1&s=360

后面的360就能控制图片的大小,我的想法是通过正则去改变他,测试代码如下

var a = 'https://avatars3.githubusercontent.com/u/7554325?v=1'
a.replace(/v=.*/g, 'v=1&s=80')

正如我所预测的,没有任何的问题,a的值会变成

'https://avatars3.githubusercontent.com/u/7554325?v=1&s=80

于是我在我的代码中的GitHub-Card.js中对取到的对象做了如下的修改:

function getUserInfo(username, callback) {
        $.ajax({
            url: 'https://api.github.com/users/' + username,
            method: 'get',
            dataType: 'jsonp'
        }).done(function(msg) {
            if(msg && msg.meta && msg.meta.status == 200) {
                if(msg.data.avatar_url) {
                    console.log(msg.data.avatar_url);
                    var tep = msg.data.avatar_url;
                    console.log(typeof(tep))
                    tep.replace(/v=.*/g, 'v=1&s=80');
                    console.log(tep)
                    msg.data.avatar_url = tep;
                }
                var userdata = msg.data;
                callback(null, userdata);
            }
            else {
                var userdata = '';
                callback(404);
            }
        })
    };

但是让我奇怪的是并没有发生替换,前后输出的tep都是同样的一个值

然后我测试了一下typeof,前面单独的a返回的是"string",而这里的tep返回的是string

感觉是这儿的问题,但是我不知道应该如何去解决,谢谢!

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
大家讲道理
tep=tep.replace(/v=.*/g, 'v=1&s=80');
高洛峰

js中大多数字符串操作的方法都会生成新的字符串或数组等,不改变原有字符串,楼上的回答应该是可以的

PHPz

因为replace函数作用后会返回新的字符串,而不是修改原字符串,所以你的写法少了东西,应该是tep = tep.replace(xxx)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号