0

如果字符串包含“非法字符”,我想编写一个简单的验证器来抛出异常,特别是:

~、@、+、% 和 |

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

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

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

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

4

2 回答 2

5

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


或者,您可以使用[~@+%|]withfind方法而不是matches

于 2013-01-25T16:03:00.960 回答
1

如果您正在寻找一种清晰简洁的方法,我不会使用正则表达式,因为它在 Java 中的 API 往往会变得混乱。阿帕奇commons-langStringUtils.containsAny("text","blacklisted");. 无论如何,它通常是一个很好的库,因为它对 Java 的补充远不止几个字符串实用程序。

于 2013-01-25T16:03:39.450 回答