假设我想查看电子邮件是否匹配nabisco.com或nabisco.com的子域,例如x.nabisco.com。
所以我们有了这个:

/.+@.*nabisco\.com$/.test(email)

但是这个regex的问题是它会接受这样的电子邮件:
[email protected]

但我们得把它限制在
[email protected]

我怎么能做第一个。是否需要字符,条件是存在子域?
问题是这个regex还需要匹配[email protected],没有子域。

最佳答案

/.+@(.*\.)?nabisco\.com$/.test(email)

这样就可以了。
How it works
随着(.*\.)?的加入,您断言nabisco之前的任何内容都必须由.来继承。括号后面的?指定整个部分(比如说foo.匹配)或不匹配(所以foonabisco不匹配)。
如果您不想匹配类似[email protected]的内容,那么您的regex应该是/.+@(.*?\.)?nabisco\.com$/

关于javascript - 正则表达式以匹配域和子域,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44531292/

10-11 10:22