regex 如何扩展正则表达式模式以防止开头和结尾出现某些字符?[duplicate]

mfpqipee  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(133)

此问题在此处已有答案

How can I validate an email address using a regular expression?(80个答案)
去年关闭了。
我正在寻找一个基本电子邮件验证使用HTML5模式。到目前为止,我有以下,但我挣扎与所需的规则如下,特别是规则1和3。

条件:

1.我只需要涵盖包含**字母(a-zA-Z)、数字(0-9)、下划线(_)、点/句点(.)、破折号(-)的电子邮件地址。
1.我只需要涵盖标准的商务电子邮件地址,例如名.姓@ domain.com、名.姓@ domain.co.uk、名.姓@ domain.de、名-第二名.姓@域部分1-域部分2.de。
1.不需要包含亚洲或阿拉伯字符,也不需要包含此处未列出的字符。
1.不需要涵盖不包含点/句点的电子邮件。

必要规则:

1.第一个字符不能是下划线、点号/句点或短划线。
1.最后一个字符不能是下划线、点号/句点或破折号。
1.一行中不能包含两个点/句点。
1.不能包含空格(也不能作为首字符或末字符)。

我的方法(无效):

<input type="email" id="email" minlength="10" pattern="^(?!^\.\_\-)(?!.*[-_.]$)[a-zA-Z0-9\.\_\-]+$" required autocomplete="off">

有人能告诉我如何正确地做这件事,并对单个部件进行解释吗?

guicsvcw

guicsvcw1#

您可以使用此选项:

pattern="^\w+(?:[.-]\w+)*@\w+(?:[.-]\w+)*(?:\.[a-zA-Z]{2,})+$"

说明:

  • ^-起点锚点
  • \w+- 1+个字字符(a-zA-Z_
  • (?:[.-]\w+)*-可选(0+)非捕获组:点或破折号,后跟1个以上的字符
  • @-文字@
  • \w+- 1+字字符
  • (?:[.-]\w+)*-可选(0+)非捕获组:点或破折号,后跟1个以上的字符
  • (?:\.+[a-zA-Z]{2,})+-所需的(1+)非捕获组:点,后跟2+个字母字符(对于TLD)
  • $-末端锚点

请考虑在@符号之前支持+label序列。许多人使用该序列对电子邮件进行分组:

pattern="^\w+(?:[.-]\w+)*(?:\+[\w.-])?@\w+(?:[.-]\w+)*(?:\.+[a-zA-Z]{2,})+$"

这里是一个工作示例。在HTML5中不需要jQuery代码,添加在这里是因为代码片段似乎不支持它。如果电子邮件无效,jQuery代码会添加一个红色边框。在HTML5环境中,如果电子邮件无效,输入文本将是红色的。
第一个

相关问题