我想從一個URL字符串 http://.....?page=1
我知道這行不通刪除此,但我想知道你會怎麼正確地做到這一點。簡單的regex問題
document.URL.replace("?page=[0-9]", "")
感謝
我想從一個URL字符串 http://.....?page=1
我知道這行不通刪除此,但我想知道你會怎麼正確地做到這一點。簡單的regex問題
document.URL.replace("?page=[0-9]", "")
感謝
看來你想擺脫協議和查詢字符串。那麼如何連接其餘部分呢?
var loc = window.location;
var str = loc.host + loc.pathname + loc.hash;
我不能完全肯定的需求是什麼,但是這還算簡單的正則表達式的作品。
loc.replace(/https?\:\/\/([^?]+)(\?|$)/,'$1');
這可能是一個幼稚的做法,但給它一個嘗試,看看它是否適合你的需要。
這是最簡單和最健壯的解決方案。儘管如此,在這種特殊情況下哈希可能是不必要的 – 2011-05-19 02:48:59
這不是一個壞主意,但即使出於好奇的緣故,我想知道正則表達式是如何工作的。謝謝! – switz 2011-05-19 02:49:18
+1推斷真實需求的方法。 – 2011-05-19 02:49:45
?
是一個正則表達式特殊字符。你需要爲文字?
轉義它。也使用regular expression literals。
document.URL.replace(/\?page=[0-9]/, "")
你是超級近。要獲取URL,請使用location.href並確保轉義問號。
var URL = location.href.replace("\?page=[0-9]", ""); location.href = URL; // and redirect if that's what you intend to do
您也可以去除所有的查詢字符串參數:
var URL = location.href.replace("\?.*", "");
從@patrick DW答案是最實用的,但如果你真的很好奇那麼這裏正則表達式的解決方案是什麼,我會做:
var trimUrl = function(s) {
var r=/^http:\/\/(.*?)\?page=\d+.*$/, m=(""+s).match(r);
return (m) ? m[1] : s;
}
trimUrl('http://foo.com/?page=123'); // => "foo.com/"
trimUrl('http://foo.com:8080/bar/?page=123'); // => "foo.com:8080/bar/"
trimUrl('foobar'); // => "foobar"
真棒,謝謝! – switz 2011-05-19 03:11:53
刪除什麼?你的問題沒有很好說明。 – sawa 2011-05-19 02:44:43
你想刪除它嗎?或者你只是想要用它做點什麼?你想要什麼「http:// .....?page = 1」字面上的'...'部分? – matchew 2011-05-19 02:45:39