正则表达式匹配电子邮件用户名,除了 10 个连续数字(如果以 1 开头则为 11)
Regex to match email username except for 10 consecutive digits (or 11 if it starts with 1)
我的电子邮件验证器需要一个正则表达式。我不想让用户输入整个 phone 数字作为 email
用户名。如果用户输入所有数字:
123456789@test.com // allowed (9 digits or less)
01234567890@test.com // allowed (11 digits but not starting with 1)
123456789012@test.com // allowed (12 digits or more)
0123456789@test.com // NOT allowed (10 digits)
11234567890@test.com // NOT allowed (11 digits and starting with 1)
有一个非常接近的答案 我试过了
<input
type="email"
pattern="(?:^|(?<=\s))(?!\d{10}|1\d{10})(\w[\w\.]*@\w+\.[\w\.]+)\b"
/>
但是排除部分 (?!\d{10}|1\d{10})
对我不起作用。我想允许 12 位或更多位数字。
谢谢
您可以尝试向您的正则表达式添加否定前瞻,如下所示:
(?:^|(?<=\s))(?!1?\d{10}@)(\w[\w\.]*@\w+\.[\w\.]+)\b
-------------
我刚刚将子模式 (?!1?\d{10}@)
添加到您的正则表达式中,它不允许当前位置后跟(可选数字 1
后跟 10 个数字后跟 @)
我的电子邮件验证器需要一个正则表达式。我不想让用户输入整个 phone 数字作为 email
用户名。如果用户输入所有数字:
123456789@test.com // allowed (9 digits or less)
01234567890@test.com // allowed (11 digits but not starting with 1)
123456789012@test.com // allowed (12 digits or more)
0123456789@test.com // NOT allowed (10 digits)
11234567890@test.com // NOT allowed (11 digits and starting with 1)
有一个非常接近的答案
<input
type="email"
pattern="(?:^|(?<=\s))(?!\d{10}|1\d{10})(\w[\w\.]*@\w+\.[\w\.]+)\b"
/>
但是排除部分 (?!\d{10}|1\d{10})
对我不起作用。我想允许 12 位或更多位数字。
谢谢
您可以尝试向您的正则表达式添加否定前瞻,如下所示:
(?:^|(?<=\s))(?!1?\d{10}@)(\w[\w\.]*@\w+\.[\w\.]+)\b
-------------
我刚刚将子模式 (?!1?\d{10}@)
添加到您的正则表达式中,它不允许当前位置后跟(可选数字 1
后跟 10 个数字后跟 @)