嗨我需要帮助更改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;
}
}
答案 0 :(得分:3)
我不确定你想改变什么部分,但是......
[需要匹配] 2-16个字符A-z 0-9 -_和空格。
[\w- ]{2,16}
\w
匹配a-z
,A-Z
,0-9
和_
。-
将匹配有效范围之外的字符类中的文字-
。' '
将匹配一个空格(忽略引号,Stack Overflow需要它们显示)。要匹配任何空格字符,请使用\s
。{2,16}
将比赛量化为2到16次。(http|https|ftp)
更改为(?:https?|ftp)
,因为您没有使用任何反向引用,因此不会捕获该组。答案 1 :(得分:2)
According to regular-expressions.info,你可以做一些事情:
\w
匹配{min, max}
所以要检查“2-16chars A-z 0-9 -_ and space”,我们必须做这样的事情:
[- \w]{2,16}