2013-07-17 5 views
0

Я близко, чтобы стать уровень 3 Regex Sorcerer (где я могу найти скрытые ловушки и есть домашнее животное сову или летучую мышь), но я все еще нужна помощь, получение там ...Regex удаления расширения и числа

Следующие работы для первых двух случаев, но не для третьего. Я попытался сделать цифры жадными, но все это упало, и я не знаю, где я ошибаюсь. Не могли бы вы помочь?

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, "") 
} 

ответ

3

Это из-за \d+: "один или более цифр".

Вам нужно \d*: "ноль или более цифр".

Расширения файлов также могут содержать цифры (например, ".mp3"), поэтому используйте [a-zA-Z0-9].

Вы должны добавить "конец строки" якоря ($), что делает глобальный флаг (g) бесполезно.

Все это вместе: /\s*\d*\.[a-zA-Z0-9]+$/ :)

+0

Благодарим вас за разъяснение этого. –

+0

@GhoulFool: придерживайтесь своих выражений на сайте www.regex101.com и объясните им, что у вас меньше шансов пропустить такие вещи. –

+0

Я не знал о regex101.com; Я возьму мясника! –

Смежные вопросы