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

时间:2017-11-10 06:28:41

标签: regex regular-language

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

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

我去了https://regex101.com/,我期待以下输入匹配,但这不是原因:

127 elmer road ??<>()

所以在android java(但是一个是任何)我写了以下函数,但它也总是返回true。如何过滤所有这些特殊字符。我想要一个函数,如果给定的字符串不匹配,则返回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;
        }

更新:我也尝试了以下内容:

enter image description here

1 个答案:

答案 0 :(得分:2)

  

我想要一个函数,如果给定的字符串不匹配,则返回true。

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

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

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