今天在工作中我遇到了如下需求,需要在一串的url中獲取到指定引數的值
舉個例子:
var str = "";
現在我需要獲取引數列表中的id項。有很多方法可以達成這個目的,比如我將這個url串的請求引數部分進行格式化,之後使用格式化後的結果來獲取我需要的引數。
function getquerystring(name,str);
if( str ));
} return result[name] ? result[name] : "";
}
但是這不是我想要的結果,這明明是乙個簡單的功能,我卻還要寫乙個函式,有沒有更簡單的方法呢?結果是,當然有。方法就是使用強大的正規表示式來實現這個功能,方法如下:
var str = "";
var result = str.split('?')[1].match(/(^|&)id=([^&]*)/)[2];
console.log(result);//123
你沒有看錯,結果就是這麼簡單!!!
對這個正規表示式簡單的進行一下解釋
表示式/(^|&)id=(^&)*/
中(^|)
的意思很簡單,就是在該正規表示式中,這一部分要麼是^
要麼是&
,連線後面的id=
的意思就是,要麼以id=
開頭,要麼就是匹配&id=
表示式中的(^&)*
的意思是匹配任意個非&符的字元,也就是匹配到下乙個&符之前的字元
表示式的意思說清楚了,接下來就是關於正規表示式中的match的用法了,這裡簡單的說明一下。
match用法
match() 方法將檢索字串 stringobject,以找到乙個或多個與 regexp 匹配的文字。這個方法的行為在很大程度上有賴於 regexp 是否具有標誌 g。
如果 regexp 沒有標誌 g,那麼 match() 方法就只能在 stringobject 中執行一次匹配。如果沒有找到任何匹配的文字, match() 將返回 null。否則,它將返回乙個陣列,其中存放了與它找到的匹配文字有關的資訊。該陣列的第 0 個元素存放的是匹配文字,而其餘的元素存放的是與正規表示式的子表示式匹配的文字。除了這些常規的陣列元素之外,返回的陣列還含有兩個物件屬性。index 屬性宣告的是匹配文字的起始字元在 stringobject 中的位置,input 屬性宣告的是對 stringobject 的引用。
如果 regexp 具有標誌 g,則 match() 方法將執行全域性檢索,找到 stringobject 中的所有匹配子字串。若沒有找到任何匹配的子串,則返回 null。如果找到了乙個或多個匹配子串,則返回乙個陣列。不過全域性匹配返回的陣列的內容與前者大不相同,它的陣列元素中存放的是 stringobject 中所有的匹配子串,而且也沒有 index 屬性或 input 屬性。match 得到的結果如下:
[「id=123」, 「」, 「123」, index: 0, input: 「id=123&name=test」, groups: undefined]
通過上面的描述,我們知道在該列中,返回的陣列的第一項是匹配的結果,第二項是分組一(^|&)
的結果,第三項是分組([^&]*)
的結果,也是我們想要的結果。
今天在工作中我遇到了如下需求,需要在一串的url中獲取到指定引數的值
舉個例子:
var str = "";
現在我需要獲取引數列表中的id項。有很多方法可以達成這個目的,比如我將這個url串的請求引數部分進行格式化,之後使用格式化後的結果來獲取我需要的引數。
function getquerystring(name,str);
if( str ));
} return result[name] ? result[name] : "";
}
但是這不是我想要的結果,這明明是乙個簡單的功能,我卻還要寫乙個函式,有沒有更簡單的方法呢?結果是,當然有。方法就是使用強大的正規表示式來實現這個功能,方法如下:
var str = "";
var result = str.split('?')[1].match(/(^|&)id=([^&]*)/)[2];
console.log(result);//123
你沒有看錯,結果就是這麼簡單!!!
對這個正規表示式簡單的進行一下解釋
表示式/(^|&)id=(^&)*/
中(^|)
的意思很簡單,就是在該正規表示式中,這一部分要麼是^
要麼是&
,連線後面的id=
的意思就是,要麼以id=
開頭,要麼就是匹配&id=
表示式中的(^&)*
的意思是匹配任意個非&符的字元,也就是匹配到下乙個&符之前的字元
表示式的意思說清楚了,接下來就是關於正規表示式中的match的用法了,這裡簡單的說明一下。
match用法
match() 方法將檢索字串 stringobject,以找到乙個或多個與 regexp 匹配的文字。這個方法的行為在很大程度上有賴於 regexp 是否具有標誌 g。
如果 regexp 沒有標誌 g,那麼 match() 方法就只能在 stringobject 中執行一次匹配。如果沒有找到任何匹配的文字, match() 將返回 null。否則,它將返回乙個陣列,其中存放了與它找到的匹配文字有關的資訊。該陣列的第 0 個元素存放的是匹配文字,而其餘的元素存放的是與正規表示式的子表示式匹配的文字。除了這些常規的陣列元素之外,返回的陣列還含有兩個物件屬性。index 屬性宣告的是匹配文字的起始字元在 stringobject 中的位置,input 屬性宣告的是對 stringobject 的引用。
如果 regexp 具有標誌 g,則 match() 方法將執行全域性檢索,找到 stringobject 中的所有匹配子字串。若沒有找到任何匹配的子串,則返回 null。如果找到了乙個或多個匹配子串,則返回乙個陣列。不過全域性匹配返回的陣列的內容與前者大不相同,它的陣列元素中存放的是 stringobject 中所有的匹配子串,而且也沒有 index 屬性或 input 屬性。match 得到的結果如下:
[「id=123」, 「」, 「123」, index: 0, input: 「id=123&name=test」, groups: undefined]
通過上面的描述,我們知道在該列中,返回的陣列的第一項是匹配的結果,第二項是分組一(^|&)
的結果,第三項是分組([^&]*)
的結果,也是我們想要的結果。
獲取移除指定Url引數 原創
1 2 移除指定的url引數 3 來自 4 5 url位址 6 需要移除引數名 7 返回新url位址 8public string removeurlpart string url,string partname 918 else 1922 return url.substring 0,url.in...
JS獲取當前 指定URL引數
首先通過 document.location 獲得當前訪問網頁的 其次用 split 方法通過 把 分為兩部分。如果 中有引數 arrobj.length 1 再用 split 方法通過 把每個引數分開 接著用 for 迴圈檢查引數中是否有與要找的引數相同引數 如果有,則返回引數的值 如果沒有,繼續...
獲取url引數
想要獲取url的引數,只要記住 url的引數是存在window.location.search中的,然後再根據引數的個數等特點用不同的方式擷取,或者匹配即可。方法一 正則法 function getquerystring name return null 呼叫 注 記得打引號 getquerystr...