允许字母数字、特殊字符且不以 @ 或 _ 或结尾的正则表达式

regex for allowing alphanumeric, special characters and not ending with @ or _ or

我是正则表达式的新手,我在正则表达式下面创建了它,它允许字母数字和 3 个特殊字符 @._ 但字符串不应以 @ 或 结尾。或 *

^[a-zA-Z0-9._@]*[^_][^.][^@]$

它验证 abc@ 但 abc 失败。

您的模式允许至少 3 个字符,其中最后 3 个是否定字符 classes 匹配除列出的任何字符。

模式 ^[a-zA-Z0-9._@]*[^_][^.][^@]$ 只会 match 3 newlines, and adding all the chars to a single character class ^[a-zA-Z0-9._@]*[^@._]$ will also match a single newline


如果您想允许所有 3 个“特殊”字符并匹配至少 3 个字符,您可以使用 {2,} 重复字符 class 2 次或更多次并匹配单个字符没有特殊字符的结尾。

^[a-zA-Z0-9._@]{2,}[a-zA-Z0-9]$

Regex demo

匹配至少一个字符(并且不以 . _ @ 结尾)

^[a-zA-Z0-9._@]*[a-zA-Z0-9]$

Regex demo

如果您将所有字符都包含在一个字符集中,就可以了。

^[a-zA-Z0-9._@]*[^@._]$

屏幕截图显示了不同文本示例的工作方式(在 http://regexr.com 上试用)

前导 ^ 是段落的开始
尾随 $ 是段落的结尾
.是一切 {2,} 表示超过 2 个字母
[^@_] 表示一个字母 Not @ 或 _

^.{2,}[^@_]$

click here the answer