我想使用 JavaScript 正则表达式验证来验证文本输入字段。
需要验证的是:输入字段应该有一个或多个电子邮件 ID,全部以分号 (;) 结尾。
因此,正确的输入是:
→ user1@xxx.com;
→ user1@xxx.com;user2@xxx.com;
→ user1@xxx.com;user2@xxx.com;user3@xxx.com;
输入错误将是
→ user1@xxx.com -------- 缺少分号
→ user1@xxx -------- 电子邮件 ID 无效
→ user1@xxx.com;user2@xxx.com -------- 第二个电子邮件 ID 后缺少分号(;)
这是我到目前为止所尝试过的,它只验证正则表达式模式的一次出现,而不是单行中的所有出现。
(^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(;)+$)
正则表达式 URL:https://regex101.com/r/4svUQz/2/
[TEST STRING 中的所有 4 个值都应该匹配,但它只匹配前 2 个]
此外,我检查了以下文章,但找不到答案。
/> Regex single-line multiple match
Regex for The Same Pattern Multiple Times in One Line
How to validate an email address in JavaScript
最佳答案
首先,要了解更简单的电子邮件正则表达式以了解所涉及的原理,请参阅 How to check for a valid email address? 。我将使用: [^@]+@[^@]+\.[^@]+
并建议我们也排除空格字符,因此,在您的特定情况下需要在结束并允许多个电子邮件地址上线:
^([^@\s]+@[^@\s]+\.[^@\s.]+;)+$
请注意,我采用了电子邮件地址的基本正则表达式并附加了 ;
,然后在整个表达式周围添加了括号 ()
并附加了 +
> 表示一次或多次。
使用正则表达式,稍微简化一下 ;
(即删除其周围不必要的括号):
^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+;)+$
关于javascript - 如何在 JavaScript 中单行多次查找工作正则表达式模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59211361/