一个关于JS的正则匹配问题
尝试着写了一个简单的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
感觉是这儿的问题,但是我不知道应该如何去解决,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
js中大多数字符串操作的方法都会生成新的字符串或数组等,不改变原有字符串,楼上的回答应该是可以的
因为
replace
函数作用后会返回新的字符串,而不是修改原字符串,所以你的写法少了东西,应该是tep = tep.replace(xxx)