2016-03-23 4 views
-1

を除く3〜12 Iは7911を除く312の間の数の範囲を選択するには、以下の条件に合致する数の範囲を選択し、次の演算子が先行されなければなりません>または<と、オプションの=です。 > < = 3,4,5,6,8,10,11,12ので、次の試合に該当するするpreg_match:7、9及び11

すなわち:スペース> = 3の有無にかかわらず、< = 12> 2< 13< = 3> = 12> > 4= == > 5。上記のすべての数字と文字に一致する次のコードを試してみましたが、><=などの1つに限定したい場合にスタックします。>>が返されます。/>{1}を試しましたが、仕事はありません。私は正規表現には新しく、事前にありがとう。

$var = '>=12'; 
    if (preg_match("/>|<|=|[3-6]|8|10|12/", $var)) { 
     echo "A match was found." . $var; 
     return true; 
    } else { 
     echo "A match was not found." . $var; 
     return false; 
    } 
+0

あなたの本当の例と偽の例は、あなたが口頭で説明したロジックと一致しません。あなたの質問をきれいにしてください。 –

+0

@TimBiegeleisen、私は(ピアレビューで)少し質問を美しくしましたが、句読点や論理区切り文字が欠落していたので、私もそれをよく理解していませんでした。 – Farside

答えて

3

あなたは括弧の中にグループをラップする必要があり、唯一のグループ内|セパレータを使用します。

"/(>|<)=?([3-6]|8|10|12)/" 

また、潜在的^とプレフィックスとの完全な文字列マッチングを強制する$で終わるを。

+0

説明や著者のコードサンプルに問題があります。 '> | <| ='だけでなく、>><<= = ' – Farside

+0

これは大変感謝しています。私は$がpregmatch =配列(「<3」、「<=3', '> 12」)以下のように私は、一致したくなかった<3、<=3 and > 12をチェックするために、さらに条件を追加しました。 foreachの($プリプレグとしての$ pregmatch){//第2チェック 場合{ エコー "エラーではない有効な入力プログラム!。" $のプリプレグ(strpos($のVAR、$のPREG)== FALSE!)。 \t \t \t \t $ var = null; // をリセットする} – Rich

関連する問題