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