val.replace(/ [^ a-zA-Z_-0-9] / g,'')产生SyntaxError:字符类中的无效范围

时间:2012-08-27 13:22:18

标签: javascript regex

我需要替换所有与范围a-zA-Z_-0-9不匹配的字符。所以我做val.replace(/[^a-zA-Z_-0-9]/g, '')但得到错误。我怎么能咬这个? 感谢

8 个答案:

答案 0 :(得分:10)

如果要在字符类中包含减号“ - ”,则必须将其放在范围的末尾:

val.replace(/[^a-zA-Z_0-9-]/g, '')

答案 1 :(得分:5)

我更喜欢这个正则表达式:

val.replace(/[^\w-]+/gi, "");

答案 2 :(得分:4)

答案 3 :(得分:3)

您希望-字符被解析为文字,但事实上它被解析为范围:_-0表示_0,就像{ {1}}表示a-za。但是,由于z的字符代码高于_,因此会出错。

在你的情况下,只是逃避它:0。这被解析为\-字符。

答案 4 :(得分:2)

您的范围较差,请移除-与数字范围之间的_,并将其放在最后或开头。

答案 5 :(得分:2)

试试这个:

val.replace(/[^a-zA-Z_0-9-]/g, '');

答案 6 :(得分:2)

你需要逃避“ - ”

val.replace(/[^a-zA-Z_\-0-9]/g, '')

答案 7 :(得分:0)

$(this).val($(this).val().replace(/[^a-zA-Z_0-9-]/g, ''));