如何将string.replace与正则表达式一起使用

时间:2014-01-31 00:01:36

标签: javascript regex

我正在尝试使用正则表达式从文件名中删除文件扩展名并String.replace

我正在使用此正则表达式:/^.*(\..*)/应该捕获扩展名,或至少在.之后的所有内容

执行str.replace(/^.*(\..*)/,"");只是给我一个空白字符串。

执行str.replace(/^.*(\..*)/,"");会给我".pdf"

小提琴:http://jsfiddle.net/KAK82/

2 个答案:

答案 0 :(得分:1)

您需要捕获(使用(.*))文件的第一位,而不是扩展本身:

var string = "CommercialTribe - Copy (14).pdf"
var re = /^(.*)\..*/;
console.log(string.replace(re,'$1'));

// Output: "CommercialTribe - Copy (14)"

Fiddle

答案 1 :(得分:1)

这里有两个选项:

  • 仅匹配扩展名并将其替换为空字符串:

    str.replace(/\.[^.]*$/, "");
    
  • 匹配整个字符串并捕获除扩展名之外的所有内容,然后替换为该匹配项的内容:

    str.replace(/^(.*)\..*$/, "$1");