我正在尝试匹配看起来像这样的文件名:
45.pdf
Run Code Online (Sandbox Code Playgroud)
要么
45_2.pdf
Run Code Online (Sandbox Code Playgroud)
所以有一个正整数,一个可选的下划线,后跟另一个正整数,一个句号和一个代表一个扩展的字符串.
问题是,我的正则表达式也匹配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)
Run Code Online (Sandbox Code Playgroud)
将下划线和第二个整数组合在一起,使用+而不是*第二个整数强制匹配,并且可选匹配整个组?,如下所示:
$aRegexp = '/[0-9]+(_[0-9]+)?\\.[a-z]+/';
Run Code Online (Sandbox Code Playgroud)