摘要:方案一其中這個正則表達式是零寬度斷言的寫法,斷言有無內容,是匹配的字符的,是指匹配以開頭的字符串指匹配數字開頭,可能不定數量逗號分隔后是數字的字符串。
一、問題
Url 有以下三種情況:
</>復制代碼
var url_1 = "https://www.xx.cn/api?keyword=&level1=&local_batch_id=&elective=&local_province_id=33";
var url_2 = "https://www.xx.cn/api?keyword=&level1=&local_batch_id=&elective=800&local_province_id=33";
var url_3 = "https://www.xx.cn/api?keyword=&level1=&local_batch_id=&elective=800,700&local_province_id=33";
匹配 elective 后的數字輸出(寫出你認為的最優解法):
</>復制代碼
[] || ["800"] || ["800","700"]
二、答案
答題可以考慮下以下幾點:
效率高;
可以擴展換 Url,換字段;
elective 是跟在一堆空值后面,要效率較高的排除掉前面的匹配;
匹配完 elective 的值之后, & 后面的匹配需要立刻停止,減少性能消耗;
第三個的 Url 中帶了 ,,也要考慮其他符號的可能性。
2.1 方案一</>復制代碼
function getUrlValue(url){
if(!url) return;
// let res = url.match(/(?<=elective=)(d+(,d+)*)/);
// let res = /(?<=elective=)(d+(.d)*)/g.exec(url);
let res = url.match(/(?<=elective=)(d+(,d+)*)/);
return res ? res[0].split(",") : [];
}
其中:這個正則表達式 <=是零寬度斷言的寫法,斷言 elective=有無內容,是匹配elective=的字符的,(?<=elective=) 是指匹配以elective=開頭的字符串;
(d+(.d)*)指匹配數字開頭,可能不定數量逗號分隔后是數字的字符串。
</>復制代碼
function getQueryFromUrl(key, url) {
const matches = url.match(new RegExp(`(?|&)${key}=([^&]*)(&|$)`));
return !matches || matches.length <= 0 ? [] : (matches[2] ? matches[2].split(",") : []);
}
getQueryFromUrl("elective" , url_1)
2.3 方案三
IE 不支持。
</>復制代碼
function getParamsUrl(url) {
var res = new URLSearchParams(url).get("elective");
return res ? res.split(",") : [];
}
文章來自:Daily-Interview-Question:第10題 編程題
正則資料可參考:陳水水的個人博客 正則表達式
更多文章分享:https://www.artroy.com.cn/
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/110289.html
摘要:對于所訪問的每個元素,函數應該將該元素傳遞給所提供的回調函數。 HTML 在線閱讀Github地址 題目列表 HTML HTML和XHTML的區別 Html的語義化 Doctype的文檔類型 cookie、sessionSttorage、localStory區別 HTML全局屬性(global attribute)有哪些? 常見的瀏覽器內核有哪些? 介紹一下你對瀏覽器內核的理解?...
摘要:對于所訪問的每個元素,函數應該將該元素傳遞給所提供的回調函數。 HTML 在線閱讀Github地址 題目列表 HTML HTML和XHTML的區別 Html的語義化 Doctype的文檔類型 cookie、sessionSttorage、localStory區別 HTML全局屬性(global attribute)有哪些? 常見的瀏覽器內核有哪些? 介紹一下你對瀏覽器內核的理解?...
摘要:對于所訪問的每個元素,函數應該將該元素傳遞給所提供的回調函數。 HTML 在線閱讀Github地址 題目列表 HTML HTML和XHTML的區別 Html的語義化 Doctype的文檔類型 cookie、sessionSttorage、localStory區別 HTML全局屬性(global attribute)有哪些? 常見的瀏覽器內核有哪些? 介紹一下你對瀏覽器內核的理解?...
摘要:并總結經典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關注微信小程序的開發和面試問題,由基礎到困難循序漸進,適合面試和開發小程序。并總結vue React html css js 經典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
閱讀 2340·2021-11-22 14:56
閱讀 1479·2021-09-24 09:47
閱讀 914·2019-08-26 18:37
閱讀 2832·2019-08-26 12:10
閱讀 1529·2019-08-26 11:55
閱讀 3150·2019-08-23 18:07
閱讀 2307·2019-08-23 14:08
閱讀 612·2019-08-23 12:12