我正在尝试检查我的字符串是否包含以下字符之一:!@#$& *但是,每当我运行测试时,它总是返回false。我不是很熟悉正则表达式,我一直在看很多例子,他们似乎都指出这是正确的,但我想它不是因为它失败了。有人能告诉我什么是正确的检查吗?
if(!preg_match("#[!@#$&*]+#", $value)){
return "Character not found";
}
else{
return "Character found!";
}
测试字符串是JohnDoe1 @
答案 0 :(得分:1)
将"#[!@#$&*]+#"
替换为"#[!@\#\$&*]+#"
您的#分隔符是冲突的,作为辅助符号,您的$可能会被解析为变量,因为您有双引号。
其他选项包括单引号和不同的分隔符'/[!@#$&*]+/'
答案 1 :(得分:1)
它失败了,因为你正在使用正则表达式中的分隔符而没有
逃避它。
尝试使用其他分隔符
"~[!@#$&*]+~"
或转义分隔符
"#[!@\#$&*]+#"