我尝试了一个正则表达式,但结果并不是我真正想要的。
这是我的正则表达式:
/^(([a-z]{0,})([0-9]+)).*/i
这是我的字符串
8500A.JPG //I need to get 8500A but I get 8500
0130799.JPG // I get the good result : 0130799
如何在。jpg文件前保持字母顺序?
你可以试试:
/^('w+).*?'.'w+$/i
看起来你可能把括号弄糊涂了。
在字符类中可以指定多个范围
/^([0-9A-Za-z]{0,})'.JPG$/
分解它正在做的事情:
- ^ =行起始
- $ =行尾
- (…)= $1将获得这里的任何内容
- [A-Za-z0-9] =匹配A-Z之间,A-Z之间和0-9之间的任何内容
- {0,} = 0次或以上
- 。= escape,所以你使用字面意思的"。"
更多信息在这里:http://www.regextester.com/pregsyntax.html
希望有帮助
可能
/^(([a-z]{0,})([0-9]+)([a-z]*)).*/i
你到底需要什么?
我认为这个简单的正则表达式是正确的
/^([a-z0-9]+)'.*/i
如何:
/^(([a-z]*)([0-9]+.*?))'..*$/i
使用下面的代码:
$pattern = "/^([0-9]+[a-zA-Z]*).*$/";
preg_match($pattern, "8500A.JPG", $matches);
echo $matches[1];
preg_match($pattern, "0130799.JPG", $matches);
echo $matches[1];
输出将是:
8500A
0130799
如果您只想从文件名中剥离扩展名,为什么不使用pathinfo()?
$filename = pathinfo($yourfile, PATHINFO_FILENAME);
在你的例子中:
echo pathinfo('8500A.JPG',PATHINFO_FILENAME);
echo pathinfo('0130799.JPG',PATHINFO_FILENAME);
输出:
8500A
0130799
这是方式更容易和干净比使用正则表达式!