javascript - 正则表达式过滤两个条件:一个接一个
问题描述
假设我有字符串example_photo_name1.png
和example_photo_name2.png
. 我想删除 first 之后的.
所有内容和 last 之前的所有内容_
。预期输出是name1
和name2
。
.
我可以先使用 pattern删除所有内容(.*)\.[^\.]*$
。但是,我不知道如何删除最后一个_
. 我怎样才能做到这一点?
解决方案
你可以使用模式(?<=_)(?!.+_).+(?=\.)
图案说明:
(?<=_)
- 积极的向后看 - 断言前面是下划线
(?!.+_)
- 否定前瞻 - 断言后面的内容不包含任何下划线(所以我们确定我们只是在最后一个下划线后面)
.+
- 匹配一个或多个任意字符
(?=\.)
- 断言后面是点.
匹配的文本将正是您想要的。