javascript - 用于测试电子邮件地址中限制词的正则表达式无法正常工作

标签 javascript regex email-validation

我的正则表达式给我带来了一些麻烦。我想限制其中包含特定单词的域,例如“foobar”。我有一个正则表达式来测试某个域,例如 foobar.com,但我还想涵盖:

  • internal.foobar.com
  • foobarcorp.com
  • randomdomainwithfoobarinit.co.uk
  • foobar.net
  • 等等

到目前为止,我的正则表达式几乎正确地涵盖了所有内容,除非 foobar 之前有字符,所以 myfoobar.com 不会被捕获,但 foobarcorp.com 会的。我在 @ 符号之后尝试了 w+. 以及 * 的混合,但没有找到正确的组合。有任何想法吗?我尝试搜索堆栈溢出,但大多数类似的问题都涉及限制某个已知的域,我试图覆盖我事先不一定知道的域。

代码:

var regex = /\w+@((?!foobar).)*\../i;
ngModel.$setValidity('restrict-email', regex.test(value)); 

最佳答案

你可以试试这个:

var regex = /\w+@(\w+\.?)?foobar(\w+)?(\.\w+)+/i;

console.log(regex.test('a@internal.foobar.com'));
console.log(regex.test('a@foobarcorp.com'));
console.log(regex.test('a@foobarcorp.com'));
console.log(regex.test('a@randomdomainwithfoobarinit.co.uk'));
console.log(regex.test('a@foobar.net'));

关于javascript - 用于测试电子邮件地址中限制词的正则表达式无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47291120/

相关文章:

jquery - 如何在 Jquery 中验证电子邮件?

javascript - 将参数传递给更高级别的事件处理程序

javascript - 有没有办法unjs(比如uncss)

javascript - AngularJS : what's the difference between these two lines?

java - 如何在 Java 正则表达式中转义美元和大括号(即 ${title})?

regex - 使用 sed 和 bash 注释掉一个文件中匹配行的文件路径

validation - Controller Grails 中的电子邮件验证

javascript - 使用 javascript/Angular/Ionic 中的 mx 记录验证来验证电子邮件地址

javascript - 映射对象的特定特定数组

javascript - 用正则表达式解释 javascript 代码