我需要替换所有与 range 不匹配的字符a-zA-Z_-0-9
。所以我这样做val.replace(/[^a-zA-Z_-0-9]/g, '')
但得到错误。我怎么能咬这个?谢谢
问问题
21727 次
8 回答
12
如果要在字符类中包含减号“-”,则必须将其放入范围的末尾:
val.replace(/[^a-zA-Z_0-9-]/g, '')
于 2012-08-27T13:25:05.720 回答
4
您希望该-
字符被解析为文字,但实际上它被解析为一个范围:_-0
表示_
to 0
,就像a-z
表示a
to一样z
。但是,由于_
具有比 更高的字符代码0
,您会收到错误消息。
在你的情况下,只是逃避它:\-
. 这被解析为-
字符。
于 2012-08-27T13:24:35.730 回答
4
我更喜欢这个正则表达式:
val.replace(/[^\w-]+/gi, "");
于 2012-08-27T13:25:23.497 回答
4
于 2012-08-27T13:27:54.780 回答
2
您的范围不好,删除-
中间_
和数字范围并将其放在末尾或开头。
于 2012-08-27T13:24:14.847 回答
2
试试这个:
val.replace(/[^a-zA-Z_0-9-]/g, '');
于 2012-08-27T13:25:18.507 回答
2
您需要转义“-”
val.replace(/[^a-zA-Z_\-0-9]/g, '')
于 2012-08-27T13:27:19.240 回答
0
$(this).val($(this).val().replace(/[^a-zA-Z_0-9-]/g, ''));
于 2016-08-26T00:43:24.553 回答