2013-01-07 19 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"; 
} 

然後你不需要正則表達式也許快一點。然後你只搜索一個字符是否在一個字符串中。