从REGEX表达式中排除字符

时间:2014-01-03 20:16:05

标签: regex

正则表达式:

^[a-z A-Z0-9-/().,@&#*!%:-]{0,100}

如何为'$'和'+'标志添加排除?我试过以下但是没有用。它排除了它出现的第一个被排除的角色以及之后的所有其他角色(包括我希望包含的角色)。

^[a-z A-Z0-9-/().,@&#*!%:-][^$+]{0,100}

2 个答案:

答案 0 :(得分:4)

您可以使用否定前瞻检查输入是否包含任何$+,然后选择适当的字符:

/^(?!.*?[$+])[a-z A-Z0-9-\/().,@&#*!%:-]{0,100}/

Live DEMO

NODE                     EXPLANATION
--------------------------------------------------------------------------------
  ^                        the beginning of the string
--------------------------------------------------------------------------------
  (?!                      look ahead to see if there is not:
--------------------------------------------------------------------------------
    .*?                      any character except \n (0 or more times
                             (matching the least amount possible))
--------------------------------------------------------------------------------
    [$+]                     any character of: '$', '+'
--------------------------------------------------------------------------------
  )                        end of look-ahead
--------------------------------------------------------------------------------
  [a-z A-Z0-9-             any character of: 'a' to 'z', ' ', 'A' to
  \/().,@&#*!%:-           'Z', '0' to '9', '-', '\/', '(', ')', '.',
  ]{0,100}                 ',', '@', '&', '#', '*', '!', '%', ':', '-
                           ' (between 0 and 100 times (matching the
                           most amount possible))

答案 1 :(得分:0)

在您的char类中未包含$+符号时,您已将其排除在外:

[a-z A-Z0-9\-\/().,@&#*!%:]{0,100}

按照我理解的方式,您不需要^来检查输入的开头。你也最好逃避-,因为它在课堂中间,并删除最后的那个,以及可以用作分隔符的/

Live demo