正则表达式-可选正向后行断言:如何匹配最后/后、.前的字符?
解决最后一个斜杠后、点号前(无点号也适配)的正则匹配问题
我来帮你搞定这个正则匹配需求!你要的是不管目标字符串末尾有没有点号,都能精准捕获**最后一个斜杠(/)之后、第一个点号(.)之前(如果有点号的话)**的内容,也就是示例里的match部分对吧?
推荐正则表达式(支持后行断言的环境)
(?<=\/)[^\/.]+(?=\.|$)
正则拆解:
(?<=\/):正向后行断言,确保我们要匹配的内容紧跟在一个斜杠之后,这样就能锁定最后一个斜杠的位置。[^\/.]+:匹配一个或多个既不是斜杠也不是点号的字符,这就是我们要提取的目标内容。(?=\.|$):正向前瞻断言,确保目标内容的后面要么是点号,要么是字符串结尾,完美适配有无点号的两种场景。
兼容旧环境的写法(无需后行断言)
如果你的运行环境不支持正向后行断言(比如旧版JavaScript),可以用这个写法,取第一个捕获组的内容即可:
\/([^\/.]+)(?:\.|$)
测试示例:
- 输入字符串:
https://example.com/test/match→ 匹配结果:match - 输入字符串:
https://example.com/test/match.pdf→ 匹配结果:match
两种写法都能精准命中你需要的内容,根据你的实际运行环境选择就好啦!
内容的提问来源于stack exchange,提问作者Jackson
相关产品推荐
相关产品推荐

