Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过黑名单验证Java字符串_Java_Regex_String - Fatal编程技术网

通过黑名单验证Java字符串

通过黑名单验证Java字符串,java,regex,string,Java,Regex,String,我想编写一个简单的验证器,在字符串包含“非法字符”时引发异常,具体如下: ~、@、+、%和| 我正在寻找最干净的方法,并希望有一种方法可以定义一个“黑名单”正则表达式,它可能看起来像: String blacklist = "~@+%|"; String toValidate = getInputFromUser(); if(toValidate.matches(blacklist)) throw new RuntimeException("Illegal characters fou

我想编写一个简单的验证器,在字符串包含“非法字符”时引发异常,具体如下:

~、@、+、%和|

我正在寻找最干净的方法,并希望有一种方法可以定义一个“黑名单”正则表达式,它可能看起来像:

String blacklist = "~@+%|";
String toValidate = getInputFromUser();

if(toValidate.matches(blacklist))
    throw new RuntimeException("Illegal characters found!");

但是我知道正则表达式是不正确的。我是朝着正确的方向前进还是偏离了方向(即是否有更简单的解决方案)?提前谢谢

正则表达式应该是
^.[~@+%|].*$



或者,您可以将
[~+%|]
查找
方法一起使用,而不是
匹配

正则表达式应该是
^.[~+%|].$



或者,您可以将
[~+%|]
find
方法结合使用,而不是
matches

,如果您想用一种简洁明了的方法来实现这一点,我不会使用regexp,因为它在Java中的API往往会变得混乱。Apache
commons lang
拥有
StringUtils.containsAny(“文本”,“黑名单”)。它通常是一个很好的库,可以包含在任何地方,因为它用比两个字符串实用程序多得多的东西来补充Java

如果您想用一种简洁明了的方法来实现,我不会使用regexp,因为它在Java中的API往往会变得凌乱。Apache
commons lang
拥有
StringUtils.containsAny(“文本”,“黑名单”)。它通常是一个很好的库,可以包含在任何地方,因为它用比两个字符串实用程序多得多的东西来补充Java