首页 > 解决方案 > 正则表达式过滤两个条件:一个接一个

问题描述

假设我有字符串example_photo_name1.pngexample_photo_name2.png. 我想删除 first 之后的.所有内容和 last 之前的所有内容_。预期输出是name1name2

.我可以先使用 pattern删除所有内容(.*)\.[^\.]*$。但是,我不知道如何删除最后一个_. 我怎样才能做到这一点?

标签: javascriptregex

解决方案


你可以使用模式(?<=_)(?!.+_).+(?=\.)

图案说明:

(?<=_)- 积极的向后看 - 断言前面是下划线

(?!.+_)- 否定前瞻 - 断言后面的内容不包含任何下划线(所以我们确定我们只是在最后一个下划线后面)

.+- 匹配一个或多个任意字符

(?=\.)- 断言后面是点.

正则表达式演示

匹配的文本将正是您想要的。


推荐阅读