2017-07-10 66 views
2

我正在使用python,想要一個簡單的正則表達式來檢查域名的有效性。我至少檢查寫域名。檢查字符串中的有效域名?

url = 'https://stackoverflow' 
     keyword = 'foo' 
     with self.assertRaises(ValueError): 
      check_keyword(url, keyword) 

我嘗試在URL文本框單元測試和有main.py網頁,我做了驗證 main.py-

高清check_keyword(URL,關鍵詞):

if re.match("^(((([A-Za-z0-9]+){1,63}\.)|(([A-Za-z0-9]+(\-)+[A-Za-z0-9]+){1,63}\.))+){1,255}$" ,url): 
    return ValueError("Invalid") 

示例

+2

您應該將您的代碼發佈到目前爲止所做的/嘗試的內容。 –

+1

[Python檢查網站是否存在]可能的重複(https://stackoverflow.com/questions/16778435/python-check-if-website-exists) –

+3

[使用RegEx進行域名驗證](https:// stackoverflow.com/questions/10306690/domain-name-validation-with-regex) –

回答

0

validators module顯示source,這也許是有點更復雜的任務。

您可以使用該模塊:

>>> import validators 
>>> validators.domain('example.com') 
True 

>>> validators.domain('example.com/') 
ValidationFailure(func=domain, ...) 

或者你可以使用RFC沒有爲Domain names構建自己的檢查。

+0

我使用的是同一模塊,它使用的正則表達式看起來很奇怪。此外,它給這個域名有效:「a.aa * com」,我認爲它不應該,特別是因爲它有一個星號作爲它的一部分。 – user3289695