通过黑名单验证Java字符串

时间:2013-01-25 16:00:29

标签: java regex string

如果String包含“非法字符”,我想编写一个简单的验证器来抛出异常,具体来说:

  

〜,@,+,%和|

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

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

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

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

2 个答案:

答案 0 :(得分:5)

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


或者,您可以[~@+%|]使用find方法代替matches

答案 1 :(得分:1)

如果您正在寻找一种清晰简洁的方法来执行此操作,我将不会使用regexp,因为Java中的API往往会变得混乱。 Apache commons-langStringUtils.containsAny("text","blacklisted");。它通常是一个很好的库,无论如何都要包含它,因为它补充了Java,而不仅仅是几个字符串实用程序。