用于匹配2个不同符号的REGEX模式

时间:2013-01-07 17:47:42

标签: php regex

我需要,如果字符串包含符号.@打印是,则队列符号无关紧要,重要的是在字符串中这个符号至少会有一次,我需要使用regexp

我写道:

if (preg_match("#(\@.*\.)|(\..*\@)#",$str)) {
    echo "yes";
}

但我怀疑可以为此写出更简单的模式

3 个答案:

答案 0 :(得分:2)

使用此正则表达式(?=.*\.)(?=.*@).+

(?=.*\.) dot exists
(?=.*@) @ exists
.+ any string

答案 1 :(得分:2)

您可以使用前瞻来区分这两个条件:

^(?=.*\.)(?=.*@)

不需要字符串起始锚,但它有助于提高性能。

答案 2 :(得分:0)

如果没有正则表达式,也许它会更容易一些。

if(strpos($str, ".") !== false || strpos($str, "@") !== false) {
    echo "yes";
}

然后你不需要正则表达式可能会快一点。然后你只搜索字符是否在字符串中。