我尝试一个正则表达式,但结果并不是我想要的。这是什么正则表达式?
这是我的正则表达式:
/^(([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之前保持字母字符?
我尝试一个正则表达式,但结果并不是我想要的。这是什么正则表达式?
这是我的正则表达式:
/^(([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之前保持字母字符?
看起来你可能已越来越封闭括号混淆。
可以指定字符类中许多范围
/^([0-9A-Za-z]{0,})\.JPG$/
要打破它在做什么:
此处了解详情: http://www.regextester.com/pregsyntax.html
希望帮助
也许
/^(([a-z]{0,})([0-9]+)([a-z]*)).*/i
你到底需要什么?
它适用于我,谢谢! 我需要从扩展中清除字符串 – bahamut100
在这种情况下,您不需要正则表达式。只需使用'$ pos = strrpos($ text,'。'); if($ pos!== false)$ text = substr($ text,0,$ pos);'。 – Gedrox
你可以尝试:
/^(\w+).*?\.\w+$/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
这是比较容易的方式,也比使用正则表达式吸尘器!
表达式匹配everyting,在哪个组中需要'8500A'? –
[PHP获取文件名无扩展名]的可能重复(http://stackoverflow.com/questions/2183486/php-get-file-name-without-file-extension) – Gordon