文字列に記号が含まれていて、yesを出力する場合.
、@
キュー記号は重要ではありません。文字列内で少なくとも1回はこの記号になることが重要です。これは、正規表現を使用して作成する必要があります。
私は書きます:
if (preg_match("#(\@.*\.)|(\..*\@)#",$str)) {
echo "yes";
}
しかし、私はそれがこれのためのより簡単なパターンを書くことができるとは思えません
この正規表現を使用する(?=.*\.)(?=.*@).+
(?=.*\.) dot exists
(?=.*@) @ exists
.+ any string
先読みを使用して、2つの条件を分離できます。
^(?=.*\.)(?=.*@)
文字列の開始アンカーは必要ありませんが、パフォーマンスには役立ちます。
おそらく、正規表現がなくても少し簡単です。
if(strpos($str, ".") !== false || strpos($str, "@") !== false) {
echo "yes";
}
次に、正規表現は必要ありません。おそらく少し高速です。次に、文字が文字列に含まれているかどうかのみを検索します。