javascript - 如何在 JavaScript 中单行多次查找工作正则表达式模式?

标签 javascript regex validation email

我想使用 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.]+;)+$

请注意,我采用了电子邮件地址的基本正则表达式并附加了 ;,然后在整个表达式周围添加了括号 () 并附加了 + > 表示一次或多次。

See Regex Demo

使用正则表达式,稍微简化一下 ; (即删除其周围不必要的括号):

^([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])?)+;)+$

See Regex Demo

关于javascript - 如何在 JavaScript 中单行多次查找工作正则表达式模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59211361/

相关文章:

javascript - 如何从json中获取输入来绘制图形

javascript - ng-repeat 不更新 html

javascript - 如何将数独网格与剑道绑定(bind)?

php - 当包含特定文件扩展名时如何将类添加到超链接?

javascript - HTML javascript 表单 - 我还可以通过哪些其他方式使用表单验证对此 javascript 函数进行编码

c++ - 验证输入和 getline() 函数

javascript - 自动填充 javascript/applescript Accuweather (菜鸟)

regex - __dirname 在正则表达式中不起作用

regex - 您如何发现 spark 数据框中列格式的异常?

regex - 使用正则表达式验证电子邮件地址会造成伤害吗?