需要preg_match帮助

时间:2011-04-12 01:36:01

标签: php preg-match

嗨我需要帮助更改preg_match以检查2-16chars A-z 0-9 -_和空格。现在它的检查URL所以我需要删除协议,添加空间和2-16分钟/最大chr。

public function checkUrl($string)
{
    if(empty($string) || preg_match("#^(http|https|ftp)://([A-Z0-9][A-Z0-9_-]*(?:.[A-Z0-9][A-Z0-9_-]*)+):?(d+)?/?#i", $string))
    {
        return true;
    }
    else
    {
        if( isset($this) )
        {
            $this->addError("Input Error");
        }
        return false;
    }
}

2 个答案:

答案 0 :(得分:3)

我不确定你想改变什么部分,但是......

  

[需要匹配] 2-16个字符A-z 0-9 -_和空格。

[\w- ]{2,16}
  • \w匹配a-zA-Z0-9_
  • -将匹配有效范围之外的字符类中的文字-
  • ' '将匹配一个空格(忽略引号,Stack Overflow需要它们显示)。要匹配任何空格字符,请使用\s
  • {2,16}将比赛量化为2到16次。
  • 您还可以将(http|https|ftp)更改为(?:https?|ftp),因为您没有使用任何反向引用,因此不会捕获该组。

答案 1 :(得分:2)

According to regular-expressions.info,你可以做一些事情:

  • A-Z,a-z,0-9和_都可以与\w匹配
  • 最小/最大可以使用括号{min, max}
  • 完成

所以要检查“2-16chars A-z 0-9 -_ and space”,我们必须做这样的事情:

[- \w]{2,16}