簡體   English   中英

正則表達式 javascript - url 與本地主機匹配

[英]Regexp javascript - url match with localhost

我正在嘗試為 url 驗證找到一個簡單的正則表達式,但在正則表達式方面不是很好..

目前我有這樣的正則表達式: (/^https?:\/\/\w/).test(url)

所以它允許將 url 驗證為http://localhost:8080等。

我想要做的是驗證 url 如果它們在末尾有一些長的特殊字符,例如: http://dodo.......http://dododo&&&&&

你可以幫幫我嗎?

這個怎么樣?

/^http:\/\/\w+(\.\w+)*(:[0-9]+)?\/?(\/[.\w]*)*$/

將匹配: http://domain.com:port/path或只是http://domainhttp://domain:port

/^http:\/\/\w+(\.\w+)*(:[0-9]+)?\/?$/

匹配沒有路徑的 URL

正則表達式塊的一些解釋:

域: \\w+(\\.\\w+)*匹配www.yahoo.com文本: localhostwww.yahoo.com (只要路徑端口部分開始即可)

端口: (:[0-9]+)? 匹配或不匹配以分號開頭的數字:8000 (它可能只有一個)

路徑: \\/?(\\/[.\\w]*)*匹配任何帶有斜線和點的字母: /user/images/0001.jpg (直到行尾)

路徑是非常有趣的部分,現在我這樣做是為了允許單獨或相鄰的點,即這樣的表達式可能是可能的: /././/.../等等。如果你想在路徑中有點就像在部分 - 沒有邊框或相鄰點,然后使用\\/?(\\/\\w+(.\\w+)*)*表達式,類似於部分。)

* 更新 *

此外,如果您想在您的 URL(或任何其他)中有(它是有效的) -字符,您應該簡單地擴展“URL 文本匹配”的字符類,即\\w+應該變成[\\-\\w]+和很快。

這取決於您需要正則表達式的復雜程度。 一個簡單的方法是只接受單詞(和端口/域):

^https?:\/\/\w+(:[0-9]*)?(\.\w+)?$

請記住,您需要使用+字符來匹配一個或多個字符。

當然,還有更好、更復雜的解決方案

如果你想匹配ABCD那么你可以離開開始部分..

例如匹配http://localhost:8080

' 寫就好了

/(localhost).

如果您想匹配特定的東西,那么請關注您要搜索的術語,而不是句子的開頭和結尾。

正則表達式用於搜索術語,直到我們有一個嚴格的規則。 :)

我希望這會做..

^https?:\/\/localhost:[0-9]{1,5}\/([-a-zA-Z0-9()@:%_\+.~#?&\/=]*)

匹配:

  • https://localhost:65535/file-upload-svc/files/app?query=abc#next

不匹配:

  • https://localhost:775535/file-upload-svc/files/app?query=abc#next

解釋

  • 它只能用於本地主機
  • 它還檢查端口號的值,因為它應該小於 65535 但您可能需要添加額外的邏輯

你可以用這個。 這也將允許 localhost 和 live 域。

^https?:\/\/\w+(\.\w+)*(:[0-9]+)?(\/.*)?$

我來晚了,但現在你應該考慮用URL class 驗證你的 URL。避免令人頭疼的正則表達式並依賴標准

let isValid;
try {
    new URL(endpoint); // Will throw if URL is invalid
    isValid = true;
} catch (err) {
    isValid = false;
}

暫無
暫無

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

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