无法形成正则表达式

could not form a regex

我正在尝试构建一个与路径中的文件名相匹配的正则表达式。

这是我的例子 url "../assets/sounds/toucObsSound_.mp3"

这是我的正则表达式 \b[^/]\w+[^.]

这有什么问题吗?它匹配所有字符 资产 声音 touchObsSound

正则表达式解释

忽略 / 并匹配所有内容,直到找到 。并忽略 .

我想我在这里做错了。有人帮忙吗?

这应该可以解决问题

/([^./]+)\.mp3$

它将匹配行尾最后一个 / 和 .mp3 之间的内容。在这种情况下,这就是您所要求的:toucObsSound_

这是一种根据需要调整它的好方法:

https://regex101.com/r/Er6kGQ/1

如果你需要删除 _ 你可以使用这个:

/([^./]+)\_.mp3$

您可以使用以下解决方案:

[^\/.]+(?=\.[^\/]*$)

参见 regex demo(注意 / 并不总是需要转义,这取决于您使用正则表达式的位置和方式)。

详情

  • [^\/.]+ - negated character class 匹配 /.
  • 以外的 1 个或多个字符
  • (?=\.[^\/]*$) - 一个 positive lookahead 需要一个 .,然后是 / 以外的 0+ 个字符,直到字符串的末尾($ ) 紧靠当前位置的右侧。