电子邮件验证-@ 之前和点之前的字符长度

Maj*_*ico 2 regex validation primefaces jsf-2

我用下面的正则表达式用于验证工作正常的电子邮件地址,我需要验证字符之前的长度@,应小于4个字符。我应该为@dot 前后的字符长度设置相同的规则.

例如,这个电子邮件地址是合法的:一个公元前@

但是,这个应该是有效的:abcd@abcd.com

我该怎么做?

这是我目前的尝试:

<ui:define name="validation-tag">
    <f:validateRegex 
        pattern="([\w\.-]*[a-zA-Z0-9_]@[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])*"
        for="contactEmailAddress" />
</ui:define>
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 5

我们可以使用带有锚点的正向预测来施加长度限制。

^(?=[^@]{4,}@)([\w\.-]*[a-zA-Z0-9_]@(?=.{4,}\.[^.]*$)[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])$
Run Code Online (Sandbox Code Playgroud)

^$将在开始和结束的字符串匹配,那么(?=[^@]{4,}@)将确保我们至少有4个字符之前的第一@,并(?=.{4,}\.[^.]*$)会确保部分之前的最后一个.是至少4个符号。

演示