Java 正则表达式以避免某些字符和某些字符组合
我必须创建一个文本框,用户在其中输入注释,并且我必须验证该输入不包含以下字符(字符组合) :|,&,;,$,%,@,“,\”,\”,(),+,CR,LF\ 上面的列表以逗号分隔,因此如果两个字符之间出现 一组逗号,它是潜在的字符组合 恶意,不是孤立的角色 我试图为此创建正则表达式,也尝试了积极的前瞻,但对我来说没有任何效果。我也讨论了前面的一些问题,但没有找到解决问题的方法Java 正则表达式以避免某些字符和某些字符组合,java,regex,Java,Regex,我必须创建一个文本框,用户在其中输入注释,并且我必须验证该输入不包含以下字符(字符组合) :|,&,;,$,%,@,“,\”,\”,(),+,CR,LF\ 上面的列表以逗号分隔,因此如果两个字符之间出现 一组逗号,它是潜在的字符组合 恶意,不是孤立的角色 我试图为此创建正则表达式,也尝试了积极的前瞻,但对我来说没有任何效果。我也讨论了前面的一些问题,但没有找到解决问题的方法 我可以验证单个恶意字符,但不能验证组合。至于字符,这非常简单。您可以使用[^]指定字符串中不允许的字符类型,在您的情况下,
我可以验证单个恶意字符,但不能验证组合。至于字符,这非常简单。您可以使用
[^]
指定字符串中不允许的字符类型,在您的情况下,[^&;$%@\'\“+\]
[^&;$%@\'\“+\\]*
将匹配不包含所述符号的字符串
至于这些组合,regex对此具有负前瞻性。在引擎开始匹配某些内容之前,它可以测试字符串中是否存在模式。语法:(?!.*thing1 |..*thing2 |…)
(需要*
,以便检查整个字符串,而不仅仅是下一个单词,所以(?!.\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
)
总的来说:
^(?。*:\\\|......*(\)|..*CR.*LF)[^&$%@\'\+\]*$
你能告诉我们你试过什么吗?我试过类似于“*.[^&$%@\\\\\].[C(?!R)].*CR和LF不是意味着控制字符吗?\r
和\n
?很好,我这样做只是为了尝试字符的组合。谢谢Andris,只需稍加修改,我就用JAVA实现了它。谢谢。