簡體   English   中英

正則表達式僅匹配具有TLD的URL

[英]Regex to match only URLs with a tld

我知道有無窮無盡的正則表達式可以驗證URL,但是我發現的所有內容都存在問題。 我需要一個可以在所有Http或Https url上匹配的正則表達式,但無法驗證鏈接是否沒有tld,並且不能驗證鏈接是否缺少子域。 如果可能的話,還需要匹配完整的url段。

以下是不應驗證的網址示例:

https://www
https://www.
https://www.exampledomain

以下是應驗證的URL的幾個示例:

https://www.axiamed.com
https://www.axiamed.com/independent-software-vendors/

我一直在使用以下正則表達式...

((ftp|https?)://[-\w]+(\.\w[-\w]*)+|(?:[a-z0-9](?:[-a-z0-9]*[a-z0-9])?\.)+(?: com\b|edu\b|biz\b|gov\b|in(?:t|fo)\b|mil\b|net\b|org\b|[a-z][a-z]\b))(\:\d+)?(/[^.!,?;"'<>()\[\]{}\s\x7F-\xFF]*(?:[.!,?]+[^.!,?;"'<>()\[\]{}\s\x7F-\xFF]+)*)?

...但是它正在獲取我不想匹配的上面列出的3個URL中的最后一個的匹配項。 不知道從這里去哪里。 有人能指出我正確的方向嗎?

感謝任何願意提供幫助的人!

Hai,這是您遇到問題的示例javascript代碼

 var result =/^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/|ftp:\\/\\/www\\.|ftp:\\/\\/)?[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[az]{2,5}(:[0-9]{1,5})?(\\/.*)?$/.test("https://www.axiamed.com/independent-software-vendors/"); if(result) alert("url Matching"); else alert("Url not matching") 

我希望這能幫到您

怎么樣? /^(ftp|https?)\\:\\/{2}w{3}\\.[a-z_A-Z]{1,}\\.[az]{3}(\\/(.){1,})?/g

 var urls = [ "https://www", "https://www.", "https://www.exampledomain", "https://www.axiamed.com", "https://www.axiamed.com/independent-software-vendors/" ] var valids = urls.map((str) => { return str.match(/^(ftp|https?)\\:\\/{2}w{3}\\.[a-z_A-Z]{1,}\\.[az]{3}(\\/(.){1,})?/g) }) console.log(valids) 

試試這個

^(http:// www。| https:// www。)?[a-z0-9] +([-。] {1} [a-z0-9] +) 。[az] {2,5 }(:[0-9] {1,5})?(/。 )?$

 var a =[ "https://www.example.com", "http://www.example.com", "www.example.com", "example.com", "http://blog.example.com", "http://www.example.com/product", "http://www.example.com/products?id=1&page=2", "http://www.example.com#up", "https://www", "https://www.", "https://www.exampledomain", "https://www.axiamed.com", "https://www.axiamed.com/independent-software-vendors/", ]; a.forEach(function(url) { var result =/^(http:\\/\\/www\\.|https:\\/\\/www\\.)[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[az]{2,5}(:[0-9]{1,5})?(\\/.*)?$/.test(url); if(result){ console.log(url+" TRUE"); } else{ console.log(url+" FALSE") } }); 

暫無
暫無

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

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