2016-08-05 5 views
0

$ varが2000〜2999のいずれかの数字に等しい場合に続くifステートメントを記述しようとしています。php preg_match numbers 2000〜2999

if (preg_match('/^20.*/', $var)) continue; 

これはうまくいくようですが、2または20001-1234-2345などにも一致しますか?

どのように私は2000-2999に制限しますか?正規表現と

おかげ

答えて

2

最も簡単な方法:

if (preg_match('/^2[0-9]{3}$/', $var)) continue; 

[0-9]任意の数字の文字に一致します。 {3}は正確に3回マッチします。したがって、000001120999などと一致します。$は、文字列の最後に一致します。

詳細については、regex101 linkを参照してください。 (左の単体テストを使用して、機能が探しているものと一致していることを確認してください)

+0

2100は、私が何か他のもの:) – Rizier123

+0

この文句を言わない試合2999を言う必要があるのですか? – sietse85

+0

私は2000-2999を逃しました。私はそれが2000年から2099年だと思った。更新された答え – FrankerZ

4

なぜpreg_match経由ですか? あなたは使用することができます古典的なif

if ($var >= 2000 && $var <= 2999) continue; 
+0

そういうことは考えていませんでした。数週間で読み直すのはずっと簡単です:) – Tom

+0

はい、まさに:-) 'preg_match'で比較する具体的な理由がないのであれば、コードを効果的かつ簡単に読むことができます。 –