我想在使用javascript正则表达式时忽略方括号

Dav*_*vid 4 javascript regex

我正在使用javascript正则表达式进行一些数据验证并指定我想接受的字符(我想接受任何字母数字字符,空格和以下内容!&,'\-,如果需要我可以稍后再添加一些).我的代码是:

var value = userInput;
var pattern = /[^A-z0-9 "!&,'\-]/;
if(patt.test(value) == true) then do something
Run Code Online (Sandbox Code Playgroud)

它工作正常,并排除了我不希望用户输入的字母,除了方括号和插入符号.从我读过的所有javascript正则表达式教程中,它们都是特殊字符 - 括号表示它们之间的任何字符和此实例中的插入符号意味着任何不在方括号之间的字符.我在这里和谷歌搜索了解为什么这些字符也被接受但无法找到解释.

所以任何人都可以帮忙,为什么我的输入接受方括号和插入符?

fre*_*138 7

原因是你使用的是Az而不是A-Za-z.Z(0x5a)和a(0x61)之间的ascii范围包括方括号,插入符号,反引号和下划线.