我必须创建一个文本框,其中用户输入注释,我必须验证,此输入不包含下面的字符(字符组合)。
:|,&,; ,$,%,@,',“,\',\”,<> ,(),+,CR,LF,\
上面的列表以逗号分隔,因此如果出现两个字符 一组逗号,它是潜在的角色组合 恶意的,而不是孤立的角色
我尝试为此创建正则表达式,并尝试了正面Lookahead,但没有为我工作。我也经历了一些早期的问题,但没有找到我的查询的解决方案。
我可以验证单个恶意字符,但不能验证组合。
答案 0 :(得分:2)
至于角色,这真的很简单。您可以使用[^]
指定字符串中不允许的字符类型,在您的情况下,[^&;$%@\'\"+\\]
[^&;$%@\'\"+\\]*
将匹配一个不包含上述符号的字符串。
对于这些组合,正则表达式具有负向前瞻。在引擎开始匹配之前,它可以测试字符串中是否存在模式。语法:(?!.*thing1|.*thing2|...)
(需要.*
以便检查整个字符串,而不仅仅是下一个字,因此(?!.*:\||.*<>|.*\(\)|.*CR|.*LF)
所有在一起:^(?!.*:\||.*<>|.*\(\)|.*CR|.*LF)[^&;$%@\'\"+\\]*$