正则表达式,以避免一些字符和一些字符组合

时间:2015-07-07 11:57:11

标签: java regex

我必须创建一个文本框,其中用户输入注释,我必须验证,此输入不包含下面的字符(字符组合)。

  

:|,&,; ,$,%,@,',“,\',\”,<> ,(),+,CR,LF,\

     

上面的列表以逗号分隔,因此如果出现两个字符   一组逗号,它是潜在的角色组合   恶意的,而不是孤立的角色

我尝试为此创建正则表达式,并尝试了正面Lookahead,但没有为我工作。我也经历了一些早期的问题,但没有找到我的查询的解决方案。

我可以验证单个恶意字符,但不能验证组合。

1 个答案:

答案 0 :(得分:2)

至于角色,这真的很简单。您可以使用[^]指定字符串中不允许的字符类型,在您的情况下,[^&;$%@\'\"+\\]

[^&;$%@\'\"+\\]*将匹配一个不包含上述符号的字符串。

对于这些组合,正则表达式具有负向前瞻。在引擎开始匹配之前,它可以测试字符串中是否存在模式。语法:(?!.*thing1|.*thing2|...)(需要.*以便检查整个字符串,而不仅仅是下一个字,因此(?!.*:\||.*<>|.*\(\)|.*CR|.*LF)

所有在一起:^(?!.*:\||.*<>|.*\(\)|.*CR|.*LF)[^&;$%@\'\"+\\]*$