正则表达式禁止字符组合

时间:2009-05-21 23:26:55

标签: regex

除了非常基本的正则表达式之外,我不是很熟悉。我有一个字段允许除单引号,双引号和问号之外的所有字符(我知道,这不是一个好主意,但我能说什么。我的客户不会对这个要求做出让步。)现在,增加了一个新要求。 @#的字符组合也是不允许的。我当前的正则表达式是^ [^?'“] {0,1000} $我现在如何将@#的要求包含为不允许的特定字符组合?

3 个答案:

答案 0 :(得分:2)

没有长度限制,你可以做

^([^"'?@]|@+[^"#'?@])*@*$

答案 1 :(得分:0)

注意:如果前瞻,支持后视,则可以选择:

^(?:(?<!@)#|@(?!#)|[^'"?@#]){0,1000}$

答案 2 :(得分:0)

Dave有一个问题 - OP的要求是禁止原始字符和@#的特定组合。此外,如果正则表达式在这种情况下测试为false,而不是在测试为真时,则允许更简单,因为正则表达式变得更容易阅读。它还否定了长度要求,如果需要,可以单独进行测试。

!val.test(/[^"'?]|@#/)