我有以下網址:
https://comanage.example.edu/sp https://wiki.cs.example.org/sp https://intranet.math.example.edu/sp https://myapp.example.com/sp
對於這些URL,我需要定義一個函數來偵測它們是否為URL,並從中替換掉https://和sp路徑。基本上,我只需要主機名稱。例如,如下所示:
https://comanage.example.edu/sp ->comanage.example.edu https://wiki.cs.example.org/sp ->wiki.cs.example.org https://intranet.math.example.edu/sp ->intranet.math.example.edu https://myapp.example.com/sp ->myapp.example.com
對於非URL,該函數應該檢測並不進行替換。如下圖所示:
nonurl.example.com -> ***no replacement***
請問有人能為我提供上述問題的解決方案嗎?我對正規表示式的使用知識不多。
P粉6800875502023-09-22 12:48:19
模式 ^https?:\/\/
在這裡應該很容易使用。我們可以用它來替換任何字串開頭的 http://
和 https://
為空字串
在模式中,^
符號表示字串的開頭。這意味著如果 http://
在字串中間出現,它將不會匹配,因為它必須在開頭
?
將前一個字元標記為可選。在模式中,s
是可選的,以便找到 http
和 https
\/
是必要的,因為斜線必須進行轉義
const urls = [ 'https://comanage.example.edu/sp', 'https://wiki.cs.example.org/sp', 'https://intranet.math.example.edu/sp', 'https://myapp.example.com/sp', 'nonurl.example.com', ]; const pattern = /^https?:\/\//i; urls.forEach(u => { console.log(u, '-->', u.replace(pattern, '')); });