我正在尝试创建一个电子邮件表单字段,要求用户以hello@domain.ext格式输入电子邮件,但也只允许商业电子邮件通过(没有gmail,yahoo,hotmail等)< / p>
我创建了两个独立工作的字段模式,但我似乎无法让它们一起工作。
需要hello@domain.ext格式
pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$"
不允许这些免费电子邮件域名。仅限商业电子邮件。
pattern="^(?!.*@(?:live|gmx|yahoo|outlook|msn|icloud|facebook|aol|zoho|yandex|lycox|inbox|myway|aim|goowy|juno|(?:hot|[gy]|google|short|at|proton|hush|lycos|fast)?mail)\.\w+$).*$"
这是我的表单代码:
<form method="POST" action="#">
<input type=hidden name="oid" value="00D70000000KCoG">
<input type=hidden name="retURL"
value="#">
<label for="email">Email</label><input id="email" maxlength="80"
name="email" size="30" type="email"
oninvalid="setCustomValidity('Please enter your business email here.')"
onchange="try{setCustomValidity('')}catch(e){}" pattern="[a-z0-
9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$" required />
<input type="submit" name="submit" value="Submit">
</form>
答案 0 :(得分:1)
以下是两种模式的组合:
pattern="[a-z0-9._%+-]+@(?!(?:live|gmx|yahoo|outlook|msn|icloud|facebook|aol|zoho|yandex|lycox|inbox|myway|aim|goowy|juno|(?:hot|[gy]|google|short|at|proton|hush|lycos|fast)?mail)\.\w+$)[a-z0-9.-]+\.[a-z]{2,4}"
请注意,开头的^
和结尾的$
不是必需的,因为它们隐含在那里:pattern
值包含^(?:
和{{1匹配整个输入值。
请参阅regex demo。
<强>详情
)$
- 隐式 - 开始字符串^
- 一个或多个字母,数字,[a-z0-9._%+-]+
,.
,_
,%
或+
-
- @
@
- 如果模式立即匹配到当前位置的右侧(即(?!(?:live|gmx|yahoo|outlook|msn|icloud|facebook|aol|zoho|yandex|lycox|inbox|myway|aim|goowy|juno|(?:hot|[gy]|google|short|at|proton|hush|lycos|fast)?mail)\.\w+$)
之后)@
- 1个小写ASCII字母,数字,[a-z0-9.-]+
或/和.
-
- 一个点\.
- 2到4个小写ASCII字母。注意:您可能希望将[a-z]{2,4}
添加到角色类:A-Z
=&gt; [a-z0-9._%+-]+
和[\w.%+-]+
=&gt; [a-z0-9.-]+
。