PHP正则表达式检查是否包含一个或多个指定字符
我正在尝试检查我的字符串是否包含以下字符之一:!@$&*但是,每当我运行测试时,它总是返回false。我对正则表达式不是很精通,我已经看过很多例子,它们似乎都指出这是正确的,但我想这不是因为它失败了。有人能告诉我正确的支票是什么吗PHP正则表达式检查是否包含一个或多个指定字符,php,regex,Php,Regex,我正在尝试检查我的字符串是否包含以下字符之一:!@$&*但是,每当我运行测试时,它总是返回false。我对正则表达式不是很精通,我已经看过很多例子,它们似乎都指出这是正确的,但我想这不是因为它失败了。有人能告诉我正确的支票是什么吗 if(!preg_match("#[!@#$&*]+#", $value)){ return "Character not found"; } else{ return "Character found!"; } 测试字符串是JohnDoe1
if(!preg_match("#[!@#$&*]+#", $value)){
return "Character not found";
}
else{
return "Character found!";
}
测试字符串是JohnDoe1@用替换“#[!$&*]+\”
,“#[!@\$&*]+\”
您的#分隔符冲突,作为辅助分隔符,$可能会被解析为变量,因为您有双引号
其他选项包括单引号和不同的delimter'/[!@#$&*]+/'
它失败了,因为在正则表达式中使用分隔符时没有
逃离它
请尝试其他分隔符
"~[!@#$&*]+~"
或者跳过分隔符
"#[!@\#$&*]+#"
您需要转义分隔符。它返回false,因为JohnDoe1
是一个单词,因此如果需要它处理字母数字字符,请将其修改为/\w+[!@$&*]+/
,您也不需要量词[!@$&*]
将是这些字符中的任意一个。