2013-08-21 39 views
5

Tôi khá mới để regex và cần phải loại bỏ một số nội dung từ url của chúng tôiRemove chuỗi truy vấn thông số từ url với regex

http://mysite.blah/problem/smtp/smtp-open-relay?page=prob_detail&showlogin=1&action=smtp:134.184.90.18 

tôi cần phải loại bỏ tất cả mọi thứ từ biểu tượng "?" và bật, để lại cho tôi chỉ:

http://mysite.blah/problem/smtp/smtp-open-relay 

Đây là biểu thức chính quy hiện tại chúng tôi đang sử dụng để lấy dữ liệu tuyến đường. Ví dụ tôi có thể lấy "smtp" và "smtp-open-relay" (mà chúng tôi cần). Tuy nhiên đôi khi url của chúng tôi thay đổi tùy thuộc vào nơi người dùng đến từ đó phụ thêm các tham số chuỗi truy vấn đang gây ra biểu thức chính quy hiện tại của chúng tôi để phát nổ.

// Retrieve the route data from the route 
var routeData = /([0-9a-zA-Z_.-]+)\/([0-9a-zA-Z_.-]+)$/g.exec(route); 

Tôi cần nó bỏ qua nội dung từ "?" trên.

+0

bạn có thể thử tách trên?. – scrappedcola

+5

Thật dễ dàng để loại bỏ chuỗi truy vấn. Chỉ cần làm điều này: 'url = url.split ('?') [0]' – musicnothing

Trả lời

17

Một biểu thức chính quy có lẽ là nhiều hơn bạn cần.

Bạn có thể làm như sau để loại bỏ tất cả mọi thứ ? và (query chuỗi + hash) sau khi nó:

var routeData = route.split("?")[0]; 

Nếu bạn thực sự muốn tước chỉ chuỗi truy vấn, bạn có thể giữ gìn băm bởi xây dựng lại các URL từ đối tượng window.location:

var routeData = window.location.origin + window.location.pathname + window.location.hash; 

Nếu bạn muốn chuỗi truy vấn, bạn có thể đọc nó với window.location.search.

+0

Tôi đã đi với giải pháp này. Cảm ơn tất cả mọi người đã giúp đỡ! – cpeele00

0

Nếu bạn đang làm điều này trong trình duyệt, cho phép các trình duyệt thực hiện phân tích cú pháp:

location.origin + location.pathname 

Hoặc cho URL tùy ý:

function withoutQS(_url) { 
    var url = document.createElement('a'); 
    url.href = _url; 
    return url.origin + url.pathname; 
} 
5

tôi chỉ sử dụng này một

var routeData= route.substring(0, route.indexOf('?')); 
+0

Nếu chỉ mục là -1 thì sao? – Learner

+0

cũng routeData is ´undefined´ then –

0

Sử dụng chức năng này:

var getCleanUrl = function(url) { 
 
    return url.replace(/#.*$/, '').replace(/\?.*$/, ''); 
 
}; 
 

 
// get rid of hash and params 
 
console.log(getCleanUrl('https://sidanmor.com/?firstname=idan&lastname=mor'));

Các vấn đề liên quan