2011-01-04 9 views
2

で私を助けて完全な停止と、文字列の拡張を繰り返す。私はこのようになり、ファイル名と一致するようにしようとしています私の正規表現

問題は、私のregexpも45_.pdfとマッチしていて、私がしたくないことです。ここ

それは:

$aRegexp = '/[0-9]+_?[0-9]*\\.[a-z]+/'; 

//$aString = '55.pdf'; 
//$aString = '55_5.pdf'; 
$aString = '55_.pdf'; 

var_dump(preg_match($aRegexp, $aString)); // should return int(0) 
+0

Easy one !!!! :) –

+0

@Close voter:他の非一般的な質問はすべてあなたが行っている間はあまりにもローカライズされていると思います。 – BoltClock

答えて

8

グループ下線と一緒に第2の整数、一致を強制するために第2の整数を+代わりに*を使用し、これと同様に、?でグループ全体を任意-一致:

$aRegexp = '/[0-9]+(_[0-9]+)?\\.[a-z]+/'; 
+0

オプションで、非キャプチャグループ '(?:_ [0-9] +)?'にします。 – BoltClock

+0

その正規表現で解析しようとしましたが、 "55_5.pdf"を解析できませんでしたか?コード:http://codepad.org/EYiT4M2h –

+1

@HoàngLong:正規表現が動作し、コードパッドのPHPビルドが壊れています。そこに表示される警告は、正規表現ではなく、PHPビルドの正規表現エンジンに問題があることを示しています。 – BoltClock

関連する問題