我试图在PHP中用preg_match验证输入字符串只包含“a-z,A-Z, - ,_,0-9”字符。如果它只包含这些,那么验证。
我试图在谷歌搜索,但我找不到任何有用的东西。
有人可以帮忙吗?
谢谢!
答案 0 :(得分:3)
如果空字符串也有效,请使用模式'/^[A-Za-z0-9_-]*$/'
。否则'/^[A-Za-z0-9_-]+$/'
所以:
$yourString = "blahblah";
if (preg_match('/^[A-Za-z0-9_-]*$/', $yourString)) {
#your string is good
}
另外,请注意,您希望在字符类中将' - '最后一个作为字符类的一部分,这样它将被读作文字' - '而不是两个字符之间的短划线,例如连字符之间的连字符AZ。
答案 1 :(得分:0)
$data = 'abc123-_';
echo preg_match('/^[\w|\-]+$/', $data); //match and output 1
$data = 'abc..';
echo preg_match('/^[\w|\-]+$/', $data); //not match and output 0
答案 2 :(得分:0)
您可以使用preg_replace($ pattern,$ replacement,$ subject):
if (preg_replace('/[A-Za-z0-9\-\_]/', '', $string)) {
echo "Detect non valid character inside the string";
}
想法是删除任何有效的字符,如果结果不为空,请执行代码。