我正在尝试匹配看起来像这样的文件名:
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)
答案 0 :(得分:8)
将下划线和第二个整数组合在一起,使用+
而不是*
来强制匹配第二个整数,并使用?
选择匹配整个组,就像这样:
$aRegexp = '/[0-9]+(_[0-9]+)?\\.[a-z]+/';