2011-01-22 52 views
0

我試過多個正則表達式,但仍然讀取包含網址的行。使用正則表達式選擇不是URL的行?

$fields=array(
":regexp"=>"/(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/" 
); 

$foo=$sql->prepare("SELECT * FROM names WHERE name NOT REGEXP :regexp"); 
$foo->execute($fields); 
+1

ftp,http和https不是唯一的模式。 – 2011-01-22 00:26:00

回答

2

嘗試正則表達式.*?:\/\/[^ ]*?\.[^ ]*

-1

你用mysql?如果是這樣,正則表達式語法不是PCRE(就像你的正則表達式似乎是)。它不使用/分隔符。

另外,如果您只是測試存在共同的URL,爲什麼不是域部分足夠?

'[a-z]+://([a-z0-9]+(-+[a-z0-9]+)*\.)+[a-z]{2,}'