这个的正则表达式是什么


What Regex for this?

我尝试了一个正则表达式,但结果并不是我真正想要的。

这是我的正则表达式:

/^(([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

这是方式更容易和干净比使用正则表达式!