我尝试使用正则表达式,但结果并非我想要的结果。
这是我的正则表达式:
/^(([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 :(得分:1)
您可以尝试:
/^(\w+).*?\.\w+$/i
答案 1 :(得分:0)
也许
/^(([a-z]{0,})([0-9]+)([a-z]*)).*/i
你到底需要什么?
答案 2 :(得分:0)
我认为这个简单的正则表达式是正确的
/^([a-z0-9]+)\.*/i
答案 3 :(得分:0)
看起来你可能已经把括号括糊糊了。
在字符类中,您可以指定多个范围
/^([0-9A-Za-z]{0,})\.JPG$/
要打破它正在做的事情:
更多信息: http://www.regextester.com/pregsyntax.html
希望有所帮助
答案 4 :(得分:0)
怎么样:
/^(([a-z]*)([0-9]+.*?))\..*$/i
答案 5 :(得分:0)
使用此代码:
$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
答案 6 :(得分:0)
如果您只想从文件名中删除扩展名,为什么不使用pathinfo()?
$filename = pathinfo($yourfile, PATHINFO_FILENAME);
在你的情况下:
echo pathinfo('8500A.JPG',PATHINFO_FILENAME);
echo pathinfo('0130799.JPG',PATHINFO_FILENAME);
输出:
8500A
0130799
WAY EASIER AND CLEANER 比使用正则表达式更好!