1. 程式人生 > >url引數的設定、獲取、刪除(js stringobject replace方法的使用)

url引數的設定、獲取、刪除(js stringobject replace方法的使用)

//獲取和設定url引數

$.UrlParams = function ( url , name , value ) {

var reg=new RegExp( "( \\\? | & )" + name + “ = ( [ ^& ]+ )( & | $ )"  , " i ");

var m = url.match( reg );

if( typeof value != ' undefined'){ //賦值

if(m){

return ( url.replace(reg,function($0,$1,$2){

return ($0.replace($2,value));

}));

} else {

if(url.indexof('?')==-1){

return (url+'?'+name+'='+value);

}else{

return (url+'&'+name+'='+value);

}

}

} else { //取值

if(m) {

return m[2];

}else{

return '';

]

}

}

//刪除url指定名稱的引數

$.UrlParamDel=function(url ,name ){

var reg=new RegExp("\\\? | &"+name+"= ([^&]+)(&|&)","i");

return url.replace(reg,"");

}

js的replace方法:(轉自w3school)

定義和用法

replace() 方法用於在字串中用一些字元替換另一些字元,或替換一個與正則表示式匹配的子串。

語法

stringObject.replace(regexp/substr,replacement)
引數 描述
regexp/substr

必需。規定子字串或要替換的模式的 RegExp 物件。

請注意,如果該值是一個字串,則將它作為要檢索的直接量文字模式,而不是首先被轉換為 RegExp 物件。

replacement 必需。一個字串值。規定了替換文字或生成替換文字的函式。

返回值

一個新的字串,是用 replacement 替換了 regexp 的第一次匹配或所有匹配之後得到的。

說明

字串 stringObject 的 replace() 方法執行的是查詢並替換的操作。它將在 stringObject 中查詢與 regexp 相匹配的子字串,然後用replacement 來替換這些子串。如果 regexp 具有全域性標誌 g,那麼 replace() 方法將替換所有匹配的子串。否則,它只替換第一個匹配子串。

replacement 可以是字串,也可以是函式。如果它是字串,那麼每個匹配都將由字串替換。但是 replacement 中的 $ 字元具有特定的含義。如下表所示,它說明從模式匹配得到的字串將用於替換。

字元 替換文字
$1、$2、...、$99 與 regexp 中的第 1 到第 99 個子表示式相匹配的文字。
$&、$0 與 regexp 相匹配的子串。
$` 位於匹配子串左側的文字。
$' 位於匹配子串右側的文字。
$$ 直接量符號。

js的RegExp方法:(轉自w3school)

RegExp 物件

RegExp 物件表示正則表示式,它是對字串執行模式匹配的強大工具。

直接量語法

/pattern/attributes

建立 RegExp 物件的語法:

new RegExp(pattern, attributes);

引數

引數 pattern 是一個字串,指定了正則表示式的模式或其他正則表示式。

引數 attributes 是一個可選的字串,包含屬性 "g"、"i" 和 "m",分別用於指定全域性匹配、區分大小寫的匹配和多行匹配。ECMAScript 標準化之前,不支援 m 屬性。如果pattern 是正則表示式,而不是字串,則必須省略該引數。

返回值

一個新的 RegExp 物件,具有指定的模式和標誌。如果引數 pattern 是正則表示式而不是字串,那麼 RegExp() 建構函式將用與指定的 RegExp 相同的模式和標誌建立一個新的 RegExp 物件。

如果不用 new 運算子,而將 RegExp() 作為函式呼叫,那麼它的行為與用 new 運算子呼叫時一樣,只是當 pattern 是正則表示式時,它只返回pattern,而不再建立一個新的 RegExp 物件。

丟擲

SyntaxError - 如果 pattern 不是合法的正則表示式,或 attributes 含有 "g"、"i" 和 "m" 之外的字元,丟擲該異常。

TypeError - 如果 pattern 是 RegExp 物件,但沒有省略 attributes 引數,丟擲該異常。

修飾符

修飾符 描述
i 執行對大小寫不敏感的匹配。
g 執行全域性匹配(查詢所有匹配而非在找到第一個匹配後停止)。
m 執行多行匹配。

方括號

方括號用於查詢某個範圍內的字元:

表示式 描述
[abc] 查詢方括號之間的任何字元。
查詢任何不在方括號之間的字元。
[0-9] 查詢任何從 0 至 9 的數字。
[a-z] 查詢任何從小寫 a 到小寫 z 的字元。
[A-Z] 查詢任何從大寫 A 到大寫 Z 的字元。
[A-z] 查詢任何從大寫 A 到小寫 z 的字元。
[adgk] 查詢給定集合內的任何字元。
[^adgk] 查詢給定集合外的任何字元。
(red|blue|green) 查詢任何指定的選項。

元字元

元字元(Metacharacter)是擁有特殊含義的字元:

元字元 描述
. 查詢單個字元,除了換行和行結束符。
\w 查詢單詞字元。
\W 查詢非單詞字元。
\d 查詢數字。
\D 查詢非數字字元。
\s 查詢空白字元。
\S 查詢非空白字元。
\b 查詢位於單詞的開頭或結尾的匹配。
\B 查詢不處在單詞的開頭或結尾的匹配。
\0 查詢 NUL 字元。
\n 查詢換行符。
\f 查詢換頁符。
\r 查找回車符。
\t 查詢製表符。
\v 查詢垂直製表符。
\xxx 查詢以八進位制數 xxx 規定的字元。
\xdd 查詢以十六進位制數 dd 規定的字元。
查詢以十六進位制數 xxxx 規定的 Unicode 字元。

量詞

量詞 描述
n+ 匹配任何包含至少一個 n 的字串。
n* 匹配任何包含零個或多個 n 的字串。
n? 匹配任何包含零個或一個 n 的字串。
n{X} 匹配包含 X 個 n 的序列的字串。
匹配包含 X 或 Y 個 n 的序列的字串。
n{X,} 匹配包含至少 X 個 n 的序列的字串。
n$ 匹配任何結尾為 n 的字串。
^n 匹配任何開頭為 n 的字串。
?=n 匹配任何其後緊接指定字串 n 的字串。
?!n 匹配任何其後沒有緊接指定字串 n 的字串。

RegExp 物件屬性

FF: Firefox, IE: Internet Explorer

屬性 描述 FF IE
RegExp 物件是否具有標誌 g。 1 4
RegExp 物件是否具有標誌 i。 1 4
一個整數,標示開始下一次匹配的字元位置。 1 4
RegExp 物件是否具有標誌 m。 1 4
正則表示式的源文字。 1 4

RegExp 物件方法

FF: Firefox, IE: Internet Explorer

方法 描述 FF IE
exec 檢索字串中指定的值。返回找到的值,並確定其位置。 1 4
test 檢索字串中指定的值。返回 true 或 false。 1 4

支援正則表示式的 String 物件的方法

FF: Firefox, IE: Internet Explorer

方法 描述 FF IE
檢索與正則表示式相匹配的值。 1 4
match 找到一個或多個正則表示式的匹配。 1 4
替換與正則表示式匹配的子串。 1 4
split 把字串分割為字串陣列。 1 4