检查字符串是否包含空格,下划线和字符

时间:2017-05-29 09:56:31

标签: php

我想检查字符串是否包含空格,下划线,数字和字符。

我创建了以下代码。但是当我添加任何其他特殊字符或连字符时,这不起作用。

例如,取这个字符串。现在这是无效的。当我从字符串有效中删除#%#%时。

$string = 'a1uper___ w__#%#%';
if(preg_match('/[a-zA-Z_]/',$string)){      
   echo 'valid';
 }
 else{
   echo 'not valid';
}

我也尝试过以下模式:

'/[a-zA-Z_]/'
'/^[a-zA-Z_]/'
'/[a-z][A-Z][_]/',...

请帮助

2 个答案:

答案 0 :(得分:2)

你需要像下面这样做: -

string("3 hello PC!")

输出: - https://eval.in/806911

注意: -

<?php

$string = 'a1uper___ w__ ';

if(preg_match('/^[a-zA-Z_\/\s\d]+$/i',$string)){      
    echo 'valid';
}
else{
    echo 'not valid';
}

现在a-zA-Z is for characters _ for underscores /s for spaces d for digits 会检查字符串是否包含除上述内容之外的任何内容。

如果字符串只有上面提到的内容,那么'/^[a-zA-Z_\/\s\d]+$/i'则为valid

这就是原因: -

invalid有效(只有字符和下划线)

a1uper___ w__无效(因为有不匹配的字符a1uper___ w__#%#%

参考: -

  1. https://regex101.com/

  2. http://www.phpliveregex.com/

  3. https://www.functions-online.com/preg_match.html

答案 1 :(得分:0)

尝试以下方法:

$string = 'a1uper___ w__#%#%';
if(preg_match('/[\'"^!@#$%&*()£+}{~?><>,|=¬\\-]/',$string)){        
    echo 'not valid';
}
else{
    echo 'valid string';
}