0

文字列に記号が含まれていて、yesを出力する場合.@キュー記号は重要ではありません。文字列内で少なくとも1回はこの記号になることが重要です。これは、正規表現を使用して作成する必要があります。

私は書きます:

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

しかし、私はそれがこれのためのより簡単なパターンを書くことができるとは思えません

4

3 に答える 3

2

この正規表現を使用する(?=.*\.)(?=.*@).+

(?=.*\.) dot exists
(?=.*@) @ exists
.+ any string
于 2013-01-07T17:51:35.503 に答える
2

先読みを使用して、2つの条件を分離できます。

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

文字列の開始アンカーは必要ありませんが、パフォーマンスには役立ちます。

于 2013-01-07T17:52:40.327 に答える
0

おそらく、正規表現がなくても少し簡単です。

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

次に、正規表現は必要ありません。おそらく少し高速です。次に、文字が文字列に含まれているかどうかのみを検索します。

于 2013-01-07T17:54:09.093 に答える