JS正則獲取url的引數

2021-10-01 07:12:19 字數 1583 閱讀 6982

獲取url上的引數

假如url是這樣的: 要取得引數a的值11 和 b 的值 2。

&c=3首先要知道url帶的引數都在?後面的查詢串,有兩種方法可以獲取

1.location.search 直接獲取查詢串

location.search =

'?a=11&b=&c=3'

2.location.href 和 split 函式取得查詢串(但這種方法當hash串或有兩個以上的?時需要另外處理,不推薦使用)

得到查詢字串後就能使用正則來得到想要的引數了

1.url引數是key=value組合,所以驗證規則是:引數名=引數值 ,引數名動態獲得,引數值可以是任意合法的url字元,

任意字元用符號.(匹配除換行符 \n 之外的任何單字元)表示。

function

getparam

(name)

.只能匹配一次,匹配多次要用 符號*(匹配0次或多次)。

function

getparam

(name)

另外我們希望單獨得到引數值,不摻雜其他匹配到的字元,那麼要用到分組符()(將分組的字元以單獨的項出現在匹配結果中)。

function

getparam

(name)

// 獲取引數a

getparam

(a);

// 11&b=&c=3

2.這裡看到把a引數值後面的一串都取出來了,因為.*匹配了多次字元,那就需要在適當的位置來終止匹配。由於每個key=value是用&來連線的。這裡的終止符就是&。但.匹配的是任意字元呀,所以得尋找最近的&,就要用到*?組合(非貪婪模式,即匹配到最近的&)

注:最後乙個引數後沒有&,那麼匹配乙個結束符$

function

getparam

(name)

// 獲取引數

getparam

(a);

// 11

getparam

(b);

// ''

getparam

(c);

// 3

但問題又來了,當引數出現又重疊字元的時候(如:?uid=x&sid=y&id=z)。匹配id時就會取到uid的值。因為上面只做了尾部處理,沒做開頭處理,這裡就要匹配引數的開始字元。把?處理掉,那麼引數的開端只能是開始位置或鏈結符(^|&)

function

getparam

(name)

現在引數名稱是全匹配時才能取到它的值。

正則獲取URL引數

function geturlparams name window.location var name geturlparams name elephant var age geturlparams age 25 var geturlparams male首先理解定義的正規表示式,意思是從頭開始匹配...

js獲取url引數

string.substring from,to 返回字串的乙個子串。包括from的字元,不包括to的字元,長度為to from,省略to,則返回的子串到字串的結尾。string.indexof search,from 在from處開始檢索字串中是否存在search值,如果存在,返回第一次出現的位置...

js 獲取url引數

因為寫的乙個回放遊戲的模組要發布成web版本,而我的程式裡需要獲取幾個資料以訪問服務端的網頁,要獲取的資料是通過客戶端傳過來的,發布後的web版本是他們後端拿去用的,所以我需要獲取自己的url引數,剛開始我並不知道這是什麼,查了資料後才發現,就是獲取位址列而已,如果早知道,也不會浪費那麼多時間了。很...