用于过滤特殊字符的正则表达式不起作用

Regular expression to filter special characters not working

我正在搜索可用于检查用户输入是否包含指定列表中的特殊字符的正则表达式。

以下是我尝试编写的正则表达式不允许使用的特殊字符:^[`~!@#$%^&*()_+={}\[\]|\:;“’<,>.?๐฿]*$

我去了 https://regex101.com/ 并且我期待以下输入匹配但不是为什么:

127 elmer road ??<>()

所以在 android java 中(但可以)我写了以下函数,但它也总是 returns true 。我怎样才能过滤所有这些特殊字符。如果给定的字符串不匹配,我想要一个 returns true 的函数。

  public boolean isValid( EditText et) {
            String string = et.getText().toString();
            boolean isValid = true;

             final Pattern sPattern
                    = Pattern.compile("^[`~!@#$%^&*()_+={}\[\]|\\:;“’<,>.?๐฿]*$");

            isValid=  !sPattern.matcher(string).matches();


            return isValid;
        }

更新:我也尝试了以下方法:

I want a function that returns true if a given string does NOT match.

你可以否定字符集。 (注意方括号内的 ^ 符号)。对于不包含任何这些特殊字符的字符串,这将 return 为真。

^[^`~!@#$%^&*()_+={}\[\]|\:;“’<,>.?๐฿]*$

https://regex101.com/r/CqtqoK/1