9

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

4

8 回答 8

12

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

val.replace(/[^a-zA-Z_0-9-]/g, '')
于 2012-08-27T13:25:05.720 回答
4

您希望该-字符被解析为文字,但实际上它被解析为一个范围:_-0表示_to 0,就像a-z表示ato一样z。但是,由于_具有比 更高的字符代码0,您会收到错误消息。

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

于 2012-08-27T13:24:35.730 回答
4

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

val.replace(/[^\w-]+/gi, "");
于 2012-08-27T13:25:23.497 回答
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 回答