javascript - ([^?&=]+)=([^?&=]*)这个正则怎么理解啊感觉不是很懂
黄舟
黄舟 2017-04-11 12:53:07
[JavaScript讨论组]
function getQueryObject(url) {
    url = url == null ? window.location.href : url;
    var search = url.substring(url.lastIndexOf("?") + 1);
    var obj = {};
    var reg = /([^?&=]+)=([^?&=]*)/g;
    search.replace(reg, function (rs, $1, $2) {
        var name = decodeURIComponent($1);
        var val = decodeURIComponent($2);               
        val = String(val);
        obj[name] = val;
        return rs;
    });
    return obj;
}
黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(1)
怪我咯

/([^?&=]+)=([^?&=]*)/g;
中括号里的^表示非的意思,所以[^?&=]表示非&?的字符。接一个=号。后面再接非&?的字符。
这个正则是匹配url地址的参数的。
var url = 'www.163.com?name=养猪场&function=养猪';
console.log(url.match(/([^?&=]+)=([^?&=]*)/g));
//["name=养猪场", "function=养猪"]
//匹配的就是url中的'name=养猪场'和'&function=养猪'
推荐一个正则神站:https://regexper.com/。
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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