电子邮件验证 - @ 之前和点之前的字符长度
Email validation- characters length before @ and before dot
我使用以下正则表达式模式来验证工作正常的电子邮件地址,但是我需要验证 @
之前的字符长度,这应该 NOT 少于 4 个字符。对于 @
之后和点 .
之前的字符长度,我应该采用相同的规则。
例如,此电子邮件地址不有效:a@b.c
但是,这个应该是有效的: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>
您可以在一系列有效字符后使用 {4,}
来指定您至少需要其中的一个。所以尝试以下模式:
(([\w\.-]*[a-zA-Z0-9_]){4,}@([\w\.-]*[a-zA-Z0-9]){4,}\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])*
我们可以使用带有锚点的正向预测来施加长度限制。
^(?=[^@]{4,}@)([\w\.-]*[a-zA-Z0-9_]@(?=.{4,}\.[^.]*$)[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])$
^
和 $
将使字符串在开始和结束时匹配,然后 (?=[^@]{4,}@)
将确保我们在第一个 @
之前至少有 4 个字符, 和 (?=.{4,}\.[^.]*$)
将确保最后一个 .
之前的部分至少有 4 个符号长。
见demo
小心过于复杂的电子邮件正则表达式。无论如何,用户仍然会犯错误(例如 tom@mycompny.com 而不是 tom@mycompany.com),并且您可能会出现漏报。
也许像 /.*\@(.{2,}\.)+.{2,}/
(test it here) 这样的东西就足够了。
我使用以下正则表达式模式来验证工作正常的电子邮件地址,但是我需要验证 @
之前的字符长度,这应该 NOT 少于 4 个字符。对于 @
之后和点 .
之前的字符长度,我应该采用相同的规则。
例如,此电子邮件地址不有效:a@b.c
但是,这个应该是有效的: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>
您可以在一系列有效字符后使用 {4,}
来指定您至少需要其中的一个。所以尝试以下模式:
(([\w\.-]*[a-zA-Z0-9_]){4,}@([\w\.-]*[a-zA-Z0-9]){4,}\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])*
我们可以使用带有锚点的正向预测来施加长度限制。
^(?=[^@]{4,}@)([\w\.-]*[a-zA-Z0-9_]@(?=.{4,}\.[^.]*$)[\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])$
^
和 $
将使字符串在开始和结束时匹配,然后 (?=[^@]{4,}@)
将确保我们在第一个 @
之前至少有 4 个字符, 和 (?=.{4,}\.[^.]*$)
将确保最后一个 .
之前的部分至少有 4 个符号长。
见demo
小心过于复杂的电子邮件正则表达式。无论如何,用户仍然会犯错误(例如 tom@mycompny.com 而不是 tom@mycompany.com),并且您可能会出现漏报。
也许像 /.*\@(.{2,}\.)+.{2,}/
(test it here) 这样的东西就足够了。