否定电子邮件正则表达式的字符

Negate characters for email Regex

我正在尝试编写一个基本的正则表达式来验证电子邮件地址。对于这种特定情况,我试图确保输入的字符串仅包含字母、数字、“。”和 ”@”。或者换句话说,我确保它不包含像 £&¬! 这样的字符。等等

我尝试获取此 [[:alnum:].@]+ 的 NOT 版本,以便突出显示不在该集中的字符,但我无法使其工作。我还尝试了不在 [\W.@]+ 中的字符(. 本来是要转义的,但 Whosebug 正在从这个 post 中删除 \),但 \W 仍在接收 .和@符号。

那里有很多电子邮件地址的正则表达式模式示例。这是一个非常 basic/naive 的,它只允许字母数字和句点(和一个@)。这个不关心域部分是否采用有效格式(即像 "abc@gmail......com" 这样的东西会通过):

^[A-Za-z0-9.]+@[A-Za-z0-9.]+$

你可以...

  • ... 匹配阳性(您的正则表达式加上锚点以确保它与完整的测试字符串匹配)
    ( ^[[:alnum:].@]+$ )
  • ... 匹配负数,这意味着在某些时候会出现非法字符
    ( [^[:alnum:].@] )

... 并检查是否存在匹配项。在第一种情况下表示 'ok',在第二种情况下表示 'fail'.

有不支持 posix 字符 类 的正则表达式方言,在这种情况下,将 [:alnum:] 替换为 0-9a-zA-Z