我必须创建一个文本框,用户在其中输入评论,并且我必须验证该输入不包含以下字符(字符组合)。
:|, &, ; , $ , % , @ , ' , " , \' , \" , <> , (), +, CR, LF, \
The list above is comma delimited, so if two characters appear between a set of commas, it’s the character combination that is potentially malicious, not the character in isolation
我尝试为此创建正则表达式,并尝试了积极的前瞻,但对我没有任何作用。我也解决了一些早期的问题,但没有找到我的查询的解决方案。
我能够验证单个恶意字符,但不能验证其组合。
最佳答案
至于角色,那真的很简单。您可以使用 [^]
指定字符串中不允许使用什么类型的字符。 ,就您而言,[^&;$%@\'\"+\\]
[^&;$%@\'\"+\\]*
将匹配不包含上述符号的字符串。
对于组合,正则表达式有负向预测。在引擎开始匹配某些内容之前,它可以测试字符串中是否不存在模式。语法:(?!.*thing1|.*thing2|...)
(需要 .*
以便检查整个字符串,而不仅仅是下一个单词,因此 (?!.*:\||.*<>|.*\(\)|.*CR|.*LF)
合计:^(?!.*:\||.*<>|.*\(\)|.*CR|.*LF)[^&;$%@\'\"+\\]*$
关于java - 正则表达式以避免某些字符和某些字符组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31267938/