我即将成为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, "")
}
答案 0 :(得分:3)
这是因为\d+
:“一个或更多位数”。
您需要\d*
:“零或更多位数”。
文件扩展名也可以包含数字(例如“。mp3”),因此请使用[a-zA-Z0-9]
。
您应该添加“字符串”锚点($
)的结尾,这会使全局标记(g
)无用。
所有这些:/\s*\d*\.[a-zA-Z0-9]+$/
:)