PHP 正则表达式只匹配某些字符

PHP Regex to Match Only Certain Characters

我会检查用户是否提交了有效的标题。标题必须包含:

  1. 字母字符(小写或大写)
  2. 数字
  3. 空格
  4. 括号
  5. 单引号和双引号
  6. 检查标题是否只用单引号或双引号填充 规避上述正则表达式。

我怎样才能做到这一点?

这应该有效

if(
    preg_match('/^[a-z0-9] ](])\'\"]+$/i',$string) && 
    strlen(preg_replace('/[\'\"]+/','',$string)))){
//passed
}
else{
//failed
}

这是一个可行的示例:

/^(?!['"]+$)[a-z\d \(\)'"]+$/i

Regex Demo

要在 PHP 代码中使用它,请执行以下操作:

$str = 'foo234234bar()"""';
$regex = '/^(?![\'"]+$)[a-z\d \(\)\'"]+$/i';

if (preg_match($regex, $str)) {
    echo "match found!";
} else {
    echo "no match";
}

PHP Demo