我的正则表达式给我带来了一些麻烦。我想限制其中包含特定单词的域,例如“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/