1 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用單個(gè)正則表達(dá)式來(lái)替換 url。下面是帶有一堆要測(cè)試的 url 的代碼:
const urls = [
'https://localhost:8000/api/users/available/23342?name=john',
'https://example.com/api/users/available/23342?name=john',
'https://example.com/api/users/available/23342',
'https://example.com/api/users/available?name=john',
];
const regex = /^[a-z]+:\/\/[^:\/]+(:[0-9]+)?\/(.*?)(\/[0-9]+)?(\?.*)?$/;
urls.forEach((url) => {
var result = url.replace(regex, '$2');
console.log(url + ' ==> ' + result);
});
輸出:
https://localhost:8000/api/users/available/23342?name=john ==> api/users/available
https://example.com/api/users/available/23342?name=john ==> api/users/available
https://example.com/api/users/available/23342 ==> api/users/available
https://example.com/api/users/available?name=john ==> api/users/available
正則表達(dá)式搜索和替換的說(shuō)明:
^
...$
- 在開始和結(jié)束處錨定[a-z]+:\/\/
- 掃描協(xié)議并://
[^:\/]+
- 掃描域名(任何之前:
或之前的內(nèi)容)/
(:[0-9]+)?
- 掃描端口號(hào)(這?
使得前面的捕獲成為可選)\/
- 掃描/
(url路徑的第一個(gè)字符)(.*?)
- 非貪婪地掃描和捕獲任何內(nèi)容,直到:(\/[0-9]+)?
- 掃描 a/
和 number 字符(如果有)(\?.*)?
- 掃描查詢參數(shù)(如果有)替換:
'$2'
,例如僅使用第二個(gè)捕獲,其中使用不包括數(shù)字的 url 路徑
添加回答
舉報(bào)