java - 正则表达式以避免某些字符和某些字符组合

标签 java regex

我必须创建一个文本框,用户在其中输入评论,并且我必须验证该输入不包含以下字符(字符组合)。

:|, &, ; , $ , % , @ , ' , " , \' , \" , <> , (), +, 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/

相关文章:

sql - 如何消除列中的重复数据

java正则表达式不工作

c# - 查找字符串中的所有数字

Javascript 匹配带有模式的行和后面的行

java - 使用 Java API 的维度 0 的切片索引 0 超出范围

Java Swing GridBagLayout 不符合预期

java - jXLS jx :image ends with java. lang.IllegalArgumentException: imgBean 值必须包含图像字节

java - 当对象是数组时将对象转换为字符串(java)

java - 找到5组交集的有效方法

python - 使用正则表达式对给定的字符串进行分区