提取 URL 参数

壹题git

第 105 题:编程题

url有三种状况github

https://www.xx.cn/api?keyword=&level1=&local_batch_id=&elective=&local_province_id=33
https://www.xx.cn/api?keyword=&level1=&local_batch_id=&elective=800&local_province_id=33
https://www.xx.cn/api?keyword=&level1=&local_batch_id=&elective=800,700&local_province_id=33
复制代码

匹配elective后的数字输出(写出你认为的最优解法):正则表达式

[] || ['800'] || ['800','700']
复制代码

常看法法有两种:编程

  • 正则表达式匹配
  • URLSearchParams() 构造函数构造实例

正则表达式匹配

// 后行断言:(?<=y)x
function getElective1(url) {
    if (!url) {
        return;
    }
    const params = url.match(/(?<=elective=)(\d+(,\d+)*)/);
    return params ? params[0].split(',') : [];
}
// 前行断言:x(?=y)
function getElective2(url) {
    if (!url) {
        return;
    }
    return (/elective=(?=(\d+(,\d+)*))/).test(url) ? RegExp.$1.split(',') : [];
}
复制代码

URLSearchParams() 构造函数构造实例

function getElective3(url) {
    if (!url) {
        return;
    }
    const params = new URLSearchParams(url).get('elective');
    return params ? params.split(',') : [];
}
复制代码

兼容性来自 MDNapi

相关文章
相关标签/搜索