2017-09-10 21 views
0

我想選擇用戶在哪裏他們的互聯網網址的格式不正確。在MySQL中選擇格式不正確的URL

我需要:

  1. 不選擇空 「互聯網」 領域

  2. 選擇 「互聯網」 領域,其中URL格式不正確。

我輸入了一個格式不正確的URL - www.te st.com - 中間有一個空格,用於測試。我試過這個查詢,但結果列表是空白的。

$sql = "SELECT * 
FROM calendario 
WHERE `Internet` NOT REGEXP '^(https?:\/\/|www\.)[\.A-Za-z0-9\-]+\.[a-zA-Z]{2,4}' AND `Internet` !='' ORDER BY Data DESC"; 

有誰知道我在做錯誤的MySQL URL驗證?

+0

的PHP是犯錯或沒有行匹配?另外請注意,posix中的字符類中的反斜槓並不會轉義,但''不需要轉義,' - '作爲最後一個字符應該是正確的。 – chris85

+0

有頂級擴展,不適合這個範圍'[a-zA-Z] {2,4}'https://www.key-systems.net/en/blog/list-of-域名擴展 –

回答

1

.的元字符應該用雙引號\\.轉義或放置到一個字符類[.]

下面的查詢應該按預期工作:

SELECT * 
    FROM calendario 
WHERE `Internet` NOT REGEXP '^(https?:\/\/|www\\.)[-.A-Za-z0-9]+\\.[a-zA-Z]{2,4}' 
    AND `Internet` !='' ORDER BY Data DESC 
+0

感謝您的答案。 – Indro

+0

@Indro,不客氣 – RomanPerekhrest