2010-08-23 2 views
0

Пытается заменить любые буквенно-цифровые символы дефисом. Не могу понять, почему он не должен работать. Он возвращает исходную строку без изменений.Регулярное выражение не работает

item.mimetype = "image/png"; 

var mimetype = item.mimetype.toLowerCase().replace("/[^a-z0-9]/g",'-'); 
+0

Хорошо, я вижу, что в JavaScript регулярное выражение имеет собственный синтаксис. Ухоженная. – Keyo

+0

Это зависит от другого языка программирования, который вы используете для написания программ. Perl и Ruby используют и синтаксис '/ a /'. – kiamlaluno

ответ

6

Удалить цитаты вокруг регулярного выражения.

Как написано, Javascript ищет строки"/[^a-z0-9]/g"

// This works 
"image/png".toLowerCase().replace(/[^a-z0-9]/g,'-'); 

// And if writing unquoted regular expressions makes you feel icky: 
"image/png".toLowerCase().replace(new RegExp("[^a-z0-9]", "g"), '-'); 

// And if I might do a full rewrite: 
"image/png".toLowerCase().replace(/\W/g, '-'); 

Более here

4

Вы поместили строку вместо регулярного выражения. Сделайте это:

.replace(/[^a-z0-9]/g,'-'); 
Смежные вопросы