PHP正则表达式检查是否包含一个或多个指定的字符

时间:2015-10-18 21:38:44

标签: php regex

我正在尝试检查我的字符串是否包含以下字符之一:!@#$& *但是,每当我运行测试时,它总是返回false。我不是很熟悉正则表达式,我一直在看很多例子,他们似乎都指出这是正确的,但我想它不是因为它失败了。有人能告诉我什么是正确的检查吗?

if(!preg_match("#[!@#$&*]+#", $value)){
    return "Character not found";
}
else{
    return "Character found!";
}

测试字符串是JohnDoe1 @

2 个答案:

答案 0 :(得分:1)

"#[!@#$&*]+#"替换为"#[!@\#\$&*]+#"

您的#分隔符是冲突的,作为辅助符号,您的$可能会被解析为变量,因为您有双引号。

其他选项包括单引号和不同的分隔符'/[!@#$&*]+/'

答案 1 :(得分:1)

它失败了,因为你正在使用正则表达式中的分隔符而没有
逃避它。

尝试使用其他分隔符

"~[!@#$&*]+~" 

或转义分隔符

"#[!@\#$&*]+#"