removeNumberAndExtension

removeNumberAndExtension

我快要成为3级正则表达式巫师(在那里我可以找到隐藏的陷阱并拥有一只宠物猫头鹰或蝙蝠),但是我仍然需要一些帮助...

以下内容适用于前两种情况,但不适用于第三种情况。我试图使数字贪婪,但整个事情都失败了,我不知道我要去哪里错了。
你能帮忙吗?

alert(removeNumberAndExtension("file 01.txt")) // works
alert(removeNumberAndExtension("file_01.txt")) // works
alert(removeNumberAndExtension("file.txt"))    // fails

function removeNumberAndExtension(fname)
{
  var rexp = new RegExp(/\s*\d+\.[a-zA-Z]+/g)
  return fname.replace(rexp, "")
}

最佳答案

这是因为\d+:“一个或多个数字”。

您需要\d*:“零个或多个数字”。

文件扩展名也可以包含数字(例如“ .mp3”),因此请使用[a-zA-Z0-9]

您应该添加“字符串结尾”锚点($),这会使全局标志(g)无效。

所有这些一起:/\s*\d*\.[a-zA-Z0-9]+$/ :)

07-28 10:17