необходима помощь preg_match - PullRequest
0 голосов
/ 12 апреля 2011

Привет, мне нужна помощь в изменении preg_match для проверки на 2-16 символов Az 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 ]

3 голосов
/ 12 апреля 2011

Я не уверен, какую часть вы хотите изменить, но ...

[Необходимо сопоставить] 2-16 символов A-z 0-9 -_ и пробел.

[\w- ]{2,16}
  • \w соответствует a-z, A-Z, 0-9 и _.
  • - будет соответствовать литералу - в классе символов вне допустимого диапазона.
  • ' ' будет соответствовать пробелу (игнорируйте кавычки, переполнение стека необходимо, чтобы они отображались). Чтобы сопоставить любой символ пробела, используйте \s.
  • {2,16} будет определять количество совпадений от 2 до 16 раз включительно.
  • Вы также можете изменить (http|https|ftp) на (?:https?|ftp), что не будет захватывать группу, поскольку вы не используете никаких обратных ссылок.
2 голосов
/ 12 апреля 2011

Согласно регулярному- expressions.info , есть несколько вещей, которые вы можете сделать:

  • A-Z, a-z, 0-9 и _ могут быть сопоставлены с \w
  • Мин / макс можно сделать с помощью скобок {min, max}

Таким образом, чтобы проверить «2-16 символов A-z 0-9 -_ и пробел», нам нужно сделать что-то вроде этого:

[- \w]{2,16}
...