javascript - 正则表达式删除扩展名和号码

标签 javascript regex

我即将成为 3 级正则巫师(在那里我可以找到隐藏的陷阱并拥有宠物猫头鹰或 bat ),但我仍然需要一些帮助才能到达那里......

以下方法适用于前两种情况,但不适用于第三种情况。我尝试让数字变得贪婪,但整个事情都失败了,我不知道我哪里出了问题。 你能帮忙吗?

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]

您应该添加“字符串结尾” anchor ($),这使得全局标志 (g)没用。

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

关于javascript - 正则表达式删除扩展名和号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17696464/

相关文章:

javascript - jquery 中 window.resize() 和 window.on ('resize' ) 之间的区别

javascript - 如何在java中发送响应期间压缩Rest服务中的数据(对象)

python-3.x - 如何通过忽略字符串前面的特殊字符从文本中提取正确的字符串?

ruby - 正则表达式中的奇怪事情

regex - 为什么这两个正则表达式不一样?

javascript - 如何在 Angular-JS 中制作 'top-level' Controller ?

javascript - Leafletjs 中折线之间不需要的多边形

javascript - 填空类型字符串的正则表达式

javascript - 如果用户更改为不同的 SVG 路径,则取消当前语音

javascript - 用于比较字符串数组的前 n 个字符的正则表达式