帮助我的正则表达式

时间:2011-01-04 09:09:05

标签: php regex

我正在尝试匹配看起来像这样的文件名:

45.pdf

或者

45_2.pdf

所以有一个正整数,一个可选的下划线,后跟另一个正整数,一个句号和一个代表一个扩展名的字符串。

问题是,我的正则表达式也匹配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)

1 个答案:

答案 0 :(得分:8)

将下划线和第二个整数组合在一起,使用+而不是*来强制匹配第二个整数,并使用?选择匹配整个组,就像这样:

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