这个用什么正则表达式?

发布于 2024-11-19 19:18:25 字数 266 浏览 3 评论 0原文

我尝试使用正则表达式,但结果并不是我想要的。

这是我的正则表达式:

/^(([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 之前保留字母字符?

I try a regex, but the result is not really that I want.

This is my regex :

/^(([a-z]{0,})([0-9]+)).*/i

And this is my strings :

8500A.JPG //I need to get 8500A but I get 8500
0130799.JPG // I get the good result : 0130799

How to keep alphabetical characters before the .JPG ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

寻找我们的幸福 2024-11-26 19:18:25

您可以尝试:

/^(\w+).*?\.\w+$/i

You can try with:

/^(\w+).*?\.\w+$/i
就此别过 2024-11-26 19:18:25

看来您可能对括号感到困惑。

在字符类中,您可以指定许多范围

/^([0-9A-Za-z]{0,})\.JPG$/

要分解它正在执行的操作:

  • ^ = 行开始
  • $ = 行结束
  • (...) = $1 将在此处获取任何内容
  • [A-Za-z0-9] = match AZ 之间、az 之间以及 0-9
  • {0,} = 0 次或多次
  • 之间的任何内容。 = 转义,因此您使用字面量“.”

更多信息请点击这里:
http://www.regextester.com/pregsyntax.html

希望有帮助

Looks like you may have been getting enclosing parenthesis confused.

inside the character class you can specify many ranges

/^([0-9A-Za-z]{0,})\.JPG$/

To break down what it is doing:

  • ^ = start of line
  • $ = end of line
  • (...) = $1 will get anything in here
  • [A-Za-z0-9] = match anything between A-Z, between a-z and between 0-9
  • {0,} = 0 or more times
  • . = escape so you use a literal "."

More info here:
http://www.regextester.com/pregsyntax.html

Hope that helps

給妳壹絲溫柔 2024-11-26 19:18:25

也许

/^(([a-z]{0,})([0-9]+)([a-z]*)).*/i

您到底需要什么?

Maybe

/^(([a-z]{0,})([0-9]+)([a-z]*)).*/i

What exactly do you need?

深者入戏 2024-11-26 19:18:25

我认为这个简单的正则表达式是正确的

/^([a-z0-9]+)\.*/i 

I think this simple regexp is correct

/^([a-z0-9]+)\.*/i 
谜泪 2024-11-26 19:18:25

怎么样:

/^(([a-z]*)([0-9]+.*?))\..*$/i

How about:

/^(([a-z]*)([0-9]+.*?))\..*$/i
伴我心暖 2024-11-26 19:18:25

使用此代码:

$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

With this code:

$pattern = "/^([0-9]+[a-zA-Z]*).*$/";
preg_match($pattern, "8500A.JPG", $matches);
echo $matches[1];       

preg_match($pattern, "0130799.JPG", $matches);
echo $matches[1];

The output will be:

8500A
0130799
榕城若虚 2024-11-26 19:18:25

如果您只想从文件名中删除扩展名,为什么不使用 pathinfo()

$filename = pathinfo($yourfile, PATHINFO_FILENAME);

在您的情况下:

echo pathinfo('8500A.JPG',PATHINFO_FILENAME);
echo pathinfo('0130799.JPG',PATHINFO_FILENAME);

输出:

8500A
0130799

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

If you only want to strip extensions from file name, why not use pathinfo()?

$filename = pathinfo($yourfile, PATHINFO_FILENAME);

In your case:

echo pathinfo('8500A.JPG',PATHINFO_FILENAME);
echo pathinfo('0130799.JPG',PATHINFO_FILENAME);

outputs:

8500A
0130799

This is WAY EASIER AND CLEANER than using regex!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文