2010-08-23 70 views
0

尝试用连字符替换任何非字母数字字符。不明白为什么它不应该工作。它返回原始的字符串不变。正则表达式不起作用

item.mimetype = "image/png"; 

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

好吧,我看到,在JavaScript中的正则表达式有它自己的语法。整齐。 – Keyo 2010-08-23 04:39:23

+0

这取决于您用来编写程序的其他编程语言。Perl和Ruby同时使用'/ a /'语法。 – kiamlaluno 2010-08-23 04:47:03

回答

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,'-');