簡體   English   中英

我需要使用Regex和Javascript匹配網址路徑的特定部分

[英]I need to match a certain part of url path using Regex and Javascript

我有以下鏈接:

sitename.com/Default.aspx?PageID=13078494

我想獲取以下內容:“ PageID = 13078494”。 這是我到目前為止的內容:

var url = "sitename.com/Default.aspx?PageID=13078494";    
urlmatch = url.match([PageID=13078494]);
urlmatch[0];

這是我想要做的正確表達嗎?

您的正則表達式及其語法錯誤。

更好的方法是根本不使用正則表達式。 使用.split()代替:

var urlmatch = url.split('?')[1];

這是小提琴: http : //jsfiddle.net/qpXNU/

var myregexp = /[?&]PageID=(\d+)/i;
var match = myregexp.exec(url);
if (match != null) {
    //This is if your match it successful
    result = match[1];
} else {
    //This is if url doesn't match
    result = "";
}

無論PageID在哪里,都可以使用該代碼。 會匹配

  • sitename.com/Default.aspx?PageID=13078494
  • anything.org/Default.aspx?PageID=13078494
  • sitename.com/Default.aspx?foo=bar&PageID=13078494
  • sitename.com/Default.html?foo=bar&PageID=13078494&bar=foo
  • default.html中?富=酒吧和PAGEID = 13078494&酒吧= FOO

重要的是,它不會匹配

  • sitename.com/Default.aspx?NotThePageID=13078494

或不進行檢查,只需url.match(/[?&]PageID=(\\d+)/i)[1] ,但我建議您這樣做,除非您確定它總是匹配的。

嘗試以下正則表達式,它將提取PageID並將其放置在第一個匹配組中:

var url = "sitename.com/Default.aspx?PageID=13078494";
urlmatch = url.match(/PageID=(\d+)/);
alert(urlmatch[1]);​ // 13078494

如果您要匹配特定的值,那很好,否則請在下面使用它來匹配pageID中的任意數字:

      /PageID=\d+/

如:

    var url = "sitename.com/Default.aspx?PageID=13078494";
    var urlmatch = url.match(/PageID=\d+/);
    alert(urlmatch[0]);

或要匹配pageID中的8個精確數字,請使用:

      /PageID=\d{8}/ 

如:

    var url = "sitename.com/Default.aspx?PageID=13078494";
    var urlmatch = url.match(/PageID=\d{8}/);
    alert(urlmatch[0]);

在處理URL方面,瀏覽器非常出色。

您應該將字符串轉換為實際的URL,如下所示:

var toURL = function (href) {
    var a = document.createElement('a');
    a.href = href;
    return a;
};

現在使用瀏覽器的內置解析功能

var url = toURL('sitename.com/Default.aspx?PageID=13078494');
alert(url.search);

暫無
暫無

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

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