簡體   English   中英

使用regex for javascript獲取url中查詢字符串項的值

[英]get the value of a query string item in a url using regex for javascript

我有一個包含產品ID的URL,該ID可以采用以下格式:

一個字母后跟任意數字的數字,然后是下划線,然后是任意數量的數字和下划線。

所以這是一個有效的產品ID: c23_02398105 ,所以這是: c23_02398105_9238714

當然在URL中,它夾在其他查詢字符串項之間,所以在這個url中,我想只提取id:

http://www.mydomain.com/product.php?action=edit&id=c23_02398105&side=1

我一直在嘗試使用正則表達式,但無濟於事:

/&id=[a-z]_[(0-9)*]&/

提取產品ID的正確方法是什么?

function qry(sr) {
  var qa = [];
  for (var prs of sr.split('&')) {
    var pra = prs.split('=');
    qa[pra[0]] = pra[1];
  }
  return qa;
}

var z = qry('http://example.com/product.php?action=edit&id=c23_02398105&side=1');
z.id; // c23_02398105

資源

下面返回每個鍵的值數組,所以如果你想獲得下面的字符串,用一些分隔符(例如params.id.join(',') )連接這些值,得到逗號分隔的字符串標識。

見小提琴


http://someurl.com?key=value&keynovalue&keyemptyvalue=&&keynovalue=nowhasvalue#somehash

處理:

  • 常規鍵/值對( ?param=value
  • 沒有值的鍵( ?param :沒有等號或值)
  • 鍵值為空值( ?param= :等號,但等號右邊沒有值)
  • 重復鍵( ?param=1&param=2
  • 刪除空鍵( ?&& :無鍵或值)

碼:

  •  function URLParameters(_querystring){ var queryString = _querystring || window.location.search || ''; var keyValPairs = []; var params = {}; queryString = queryString.replace(/^[^?]*\\?/,''); // only get search path if (queryString.length) { keyValPairs = queryString.split('&'); for (pairNum in keyValPairs) { if (! (!isNaN(parseFloat(pairNum)) && isFinite(pairNum)) ) continue; var key = keyValPairs[pairNum].split('=')[0]; if (!key.length) continue; if (typeof params[key] === 'undefined') params[key] = []; params[key].push(keyValPairs[pairNum].split('=')[1]); } } return params; } 

怎么稱呼:

  •  var params = URLParameters(<url>); // if url is left blank uses the current page URL params.key; // returns an array of values (1..n) for the key (called 'key' here) 

給定鍵的示例輸出('key','keyemptyvalue','keynovalue')使用以上URL:

  •  key ["value"] keyemptyvalue [""] keynovalue [undefined, "nowhasvalue"] 

您可以使用JavaScript字符串函數而不是像這樣的regexp:

var url = "http://www.example.com/product.php?action=edit&id=c23_02398105&side=1";
var idToEnd = url.substring(url.search("&id")+4, url.length);
var idPure = idToEnd.substring(0, idToEnd.search("&"));
alert(idPure);

輸出為c23_02398105

以下表達式適合您的描述

/&id=([a-z]\d*_[\d_]*)/

它假設字母是小寫的,並且在指定格式的url中只有一個id,或者你想要的那個是第一個。

var url =
   'http://www.mydomain.com/product.php?action=edit&id=c23_02398105&side=1';

var m = url.match( /&id=([a-z]\d*_[\d_]*)/ );

console.log( m && m[1] );    // 'c23_02398105'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM