JavaScript正则表达式在文件扩展名之前替换最后的下划线和数字

时间:2012-01-19 04:41:15

标签: javascript regex

如何摆脱文件名中的最后一个下划线和数字。

以下是一个例子:

案例#1

fileName_01.jpg --> fileName.jpg

案例#1

file_Name_01.jpg --> file_Name.jpg

案例#3

file_Name_.jpg --> file_Name_.jpg

jsfiddle测试文件: http://jsfiddle.net/2t3rR/4/

4 个答案:

答案 0 :(得分:1)

我认为最好使用前瞻并且不匹配点:

"file_name_01.jpg".replace(/_\d+(?=\.)/, '')

答案 1 :(得分:1)

这将是怎样的?

"fileName_01.jpg".replace(/_\d+(\.[^.]+)$/,"$1")

答案 2 :(得分:1)

<script language="javascript" type="text/javascript">
        function RegexTester() {
            debugger;
            var string = 'fileName_01.jpg';
            var regex = new RegExp('_[0-9]+\.');
            string = string.replace(regex, '.'); //Result - fileName.jpg

            string = 'file_Name_01.jpg';
            string = string.replace(regex, '.'); //Result - file_Name.jpg

            string = 'file_Name_.jpg';
            string = string.replace(regex, '.'); //Result - file_Name_.jpg
        }
    </script>

答案 3 :(得分:0)

使用模式/_[0-9]+\./并替换为.

strArr[i].replace(/_[0-9]+\./, ".")

尾随.是一个弱尝试,以确保我们只替换扩展名之前的数字,因此我们不会将“file_01_name.jpg”变成“file_name.jpg”。

这会在“file_01.asdf.jpg”这样的东西上失败,它会转换为“file.asdf.jpg”,但希望这种文件名在您的应用程序中不会出现。 (否则我们必须在文件扩展名中制作正则表达式和硬编码。)