2013-01-07 22 views
0

我需要,如果字符串包含符号.@打印是的,队列符号并不重要,重要的是在字符串中将这个符号至少一次,我需要使用正则表达式。REGEXP模式匹配2个不同的符号

我写:

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

但我怀疑,可以写更多的方便模式这个

+2

我的spidey感觉说你试图验证一个电子邮件地址? – phpisuber01

+0

不,不是电子邮件地址 – RIKI

+2

不是一个正则表达式,但这总是一个选项:'if(strpos($ str,“@”)!== false && strpos($ str,“。”)!== false) – Supericy

回答

2

使用这个表达式(?=.*\.)(?=.*@).+

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

你可以用前瞻的两个条件分开:

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

字符串起始锚点不是必需的,但它有助于提高性能。

0

也许它没有一个正则表达式更容易一点。

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

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