摘要:方案一其中這個正則表達式是零寬度斷言的寫法,斷言有無內(nèi)容,是匹配的字符的,是指匹配以開頭的字符串指匹配數(shù)字開頭,可能不定數(shù)量逗號分隔后是數(shù)字的字符串。
一、問題
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 后的數(shù)字輸出(寫出你認為的最優(yōu)解法):
[] || ["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=有無內(nèi)容,是匹配elective=的字符的,(?<=elective=) 是指匹配以elective=開頭的字符串;
(d+(.d)*)指匹配數(shù)字開頭,可能不定數(shù)量逗號分隔后是數(shù)字的字符串。
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/
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/110289.html
摘要:對于所訪問的每個元素,函數(shù)應(yīng)該將該元素傳遞給所提供的回調(diào)函數(shù)。 HTML 在線閱讀Github地址 題目列表 HTML HTML和XHTML的區(qū)別 Html的語義化 Doctype的文檔類型 cookie、sessionSttorage、localStory區(qū)別 HTML全局屬性(global attribute)有哪些? 常見的瀏覽器內(nèi)核有哪些? 介紹一下你對瀏覽器內(nèi)核的理解?...
摘要:對于所訪問的每個元素,函數(shù)應(yīng)該將該元素傳遞給所提供的回調(diào)函數(shù)。 HTML 在線閱讀Github地址 題目列表 HTML HTML和XHTML的區(qū)別 Html的語義化 Doctype的文檔類型 cookie、sessionSttorage、localStory區(qū)別 HTML全局屬性(global attribute)有哪些? 常見的瀏覽器內(nèi)核有哪些? 介紹一下你對瀏覽器內(nèi)核的理解?...
摘要:對于所訪問的每個元素,函數(shù)應(yīng)該將該元素傳遞給所提供的回調(diào)函數(shù)。 HTML 在線閱讀Github地址 題目列表 HTML HTML和XHTML的區(qū)別 Html的語義化 Doctype的文檔類型 cookie、sessionSttorage、localStory區(qū)別 HTML全局屬性(global attribute)有哪些? 常見的瀏覽器內(nèi)核有哪些? 介紹一下你對瀏覽器內(nèi)核的理解?...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關(guān)注微信小程序的開發(fā)和面試問題,由基礎(chǔ)到困難循序漸進,適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
閱讀 2339·2021-11-22 14:56
閱讀 1477·2021-09-24 09:47
閱讀 913·2019-08-26 18:37
閱讀 2832·2019-08-26 12:10
閱讀 1528·2019-08-26 11:55
閱讀 3150·2019-08-23 18:07
閱讀 2306·2019-08-23 14:08
閱讀 611·2019-08-23 12:12