Php 帮我处理我的regexp
我正在尝试匹配如下所示的文件名:Php 帮我处理我的regexp,php,regex,Php,Regex,我正在尝试匹配如下所示的文件名: 45.pdf 或 因此有一个正整数,一个可选的下划线,后跟另一个正整数,一个句号和一个字符串来重新表示扩展名 问题是,我的regexp也匹配了45_uwk.pdf,我不想这样 这是: $aRegexp = '/[0-9]+_?[0-9]*\\.[a-z]+/'; //$aString = '55.pdf'; //$aString = '55_5.pdf'; $aString = '55_.pdf'; var_dump(preg_match($aRegexp
45.pdf
或
因此有一个正整数,一个可选的下划线,后跟另一个正整数,一个句号和一个字符串来重新表示扩展名
问题是,我的regexp也匹配了45_uwk.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)
将下划线和第二个整数组合在一起,对第二个整数使用
+
而不是*
强制匹配,并可选择使用?
匹配整个组,如下所示:
$aRegexp = '/[0-9]+(_[0-9]+)?\\.[a-z]+/';
(可选)将其设置为非捕获组
(?:[0-9]+)?
。我试图使用该正则表达式进行解析,但未能解析“55_5.pdf”?代码:@Hoáng Long:regex有效,codepad的PHP构建被破坏。您看到的警告表明正则表达式引擎的PHP版本中存在问题,而不是正则表达式。@Close voter:您最好在处理其他非常规问题时关闭所有非常规问题,因为这些问题过于本地化。
$aRegexp = '/[0-9]+(_[0-9]+)?\\.[a-z]+/';