我需要替换所有与范围a-zA-Z_-0-9
不匹配的字符。所以我做val.replace(/[^a-zA-Z_-0-9]/g, '')
但得到错误。我怎么能咬这个?
感谢
答案 0 :(得分:10)
如果要在字符类中包含减号“ - ”,则必须将其放在范围的末尾:
val.replace(/[^a-zA-Z_0-9-]/g, '')
答案 1 :(得分:5)
我更喜欢这个正则表达式:
val.replace(/[^\w-]+/gi, "");
答案 2 :(得分:4)
答案 3 :(得分:3)
您希望-
字符被解析为文字,但事实上它被解析为范围:_-0
表示_
到0
,就像{ {1}}表示a-z
到a
。但是,由于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, ''));