我需要,如果字符串包含符号.
和@
打印是,则队列符号无关紧要,重要的是在字符串中这个符号至少会有一次,我需要使用regexp
我写道:
if (preg_match("#(\@.*\.)|(\..*\@)#",$str)) {
echo "yes";
}
但我怀疑可以为此写出更简单的模式
答案 0 :(得分:2)
使用此正则表达式(?=.*\.)(?=.*@).+
(?=.*\.) dot exists
(?=.*@) @ exists
.+ any string
答案 1 :(得分:2)
您可以使用前瞻来区分这两个条件:
^(?=.*\.)(?=.*@)
不需要字符串起始锚,但它有助于提高性能。
答案 2 :(得分:0)
如果没有正则表达式,也许它会更容易一些。
if(strpos($str, ".") !== false || strpos($str, "@") !== false) {
echo "yes";
}
然后你不需要正则表达式可能会快一点。然后你只搜索字符是否在字符串中。