我不能让这个正则表达式正常工作

时间:2012-05-30 21:01:30

标签: regex url preg-match expression match

我是绝望的,试图让John Grubers网址识别正则表达式正常工作!我写的简单函数总是返回false,即使其中有明显的URL!

我正在尝试测试2个不同功能中的任何网址和网络特定网址。我是Regexs的新手,所以这几乎可以肯定我!

功能:

<?php
function isweburl($url)
{
return(preg_match("(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:       [^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!    ()\[\]{};:'\".,<>?«»“”‘’]))", $url));

}

function isanyurl($url)
{
echo "suspected url:$url<br>";
return(preg_match("/(?i)\b((?:https?://|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:    [^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!    ()\[\]{};:'\".,<>?«»“”‘’]))/", $url));

}

$test=isanyurl('http://www.sega.com');
var_dump($test);
echo "<br>web test:<br>";
$test=isweburl('http://www.sega.com');
var_dump($test);
?>

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

以下是你的正则表达式 我认为preg_match需要一个正则表达式分隔符“/ regex /”或“〜正则表达式”。
但是,如果您使用分隔符作为正则表达式正文中的字符,则必须对其进行转义。

"     
 (?i)\b
 (
      (?:
           https?://
        |  www\d{0,3}[.]
        |  [a-z0-9.\-]+[.][a-z]{2,4}/
      )
      (?:
           [^\s()<>]+
        |  \(
           (
                [^\s()<>]+
             |  
                (
                     \([^\s()<>]+\)
                )
           )*
           \)
      )+
      (?:
           \(
           (
                [^\s()<>]+
             |  
                (
                     \([^\s()<>]+\)
                )
           )*
           \)
        |  [^\s`!    ()\[\]{};:'\".,<>?«»“”‘’]
      )
 )
"

由于您使用/作为字符,请尝试使用其他分隔符 扩展 -

"~
 (?i)\b
 (
      (?:
           https?://
        |  www\d{0,3}[.]
        |  [a-z0-9.\-]+[.][a-z]{2,4}/
      )
      (?:
           [^\s()<>]+
        |  \(
           (
                [^\s()<>]+
             |  
                (
                     \([^\s()<>]+\)
                )
           )*
           \)
      )+
      (?:
           \(
           (
                [^\s()<>]+
             |  
                (
                     \([^\s()<>]+\)
                )
           )*
           \)
        |  [^\s`!    ()\[\]{};:'\".,<>?«»“”‘’]
      )
 )
~x"