假设我想查看电子邮件是否匹配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/