2016-12-24 5 views
0
if (strpos($weight, 'g') !== false) { ... } 
elseif (stripos($weight, 'kg') !== false) { ... } 

最初の条件は、すべてkgの重みにも一致します。私はxxx gまたはxxgと一致したいだけです。 g部分文字列一致の例外の作成

+0

例の正規表現のようなものだろうか?私。最初の条件はkgをテストする必要があり、elseifはgをテストする必要があります。 – Merv

+0

この場合、Regexははるかに使いやすくなります。 –

+1

REGX '[a-zA-Z] {2,3} [g]'はどちらの場合もテストします – Zain

答えて

2

xxx gまたはxxgまたはxxxgまたはxxgをキャプチャするには、正規表現を使用してユースケースをテストすることができます。これは、2ギガバイト(2g、3g、4gを除く)です。ただ、上にあなたのelseifを入れ

<?php 

if(preg_match('/\d{2,} ?g/', $input)){ 
    // this should only work for: 
    // 12g, 12 g, 123g, 123 g, 1235g, 1234 g 
} 
+1

'\ d {2、}?g'が良いでしょう。 '\ d'は' [0-9] 'と同じです。 '[\ d]'は必要ありません。 '{2、} +'と同じです - '{2、} 'は2から無制限までを意味します。余分な '+'の必要はありません。 –

+0

私は同意します。私は正規表現を修正するだろう、私は最初にいくつかの数字の数をテストするつもりだったが、後で彼は2桁以上を望んだことを見た..また、一致をキャプチャする必要はない '()'を削除した – Merv

関連する問題