使用正则表达式选择不是网址的行?

时间:2011-01-22 00:21:41

标签: sql regex

我尝试了多个正则表达式,但仍然提取包含网址的行。

$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);

2 个答案:

答案 0 :(得分:2)

试用正则表达式.*?:\/\/[^ ]*?\.[^ ]*

答案 1 :(得分:-1)

你正在使用mysql吗?如果是这样,正则表达式语法不是PCRE(就像你的正则表达式一样)。它不使用/分隔符。

另外,如果您只测试常见网址的存在,为什么域名部分不足够?

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