说我想查看电子邮件是否与nabisco.com或nabisco.com的子域匹配,例如x.nabisco.com。
所以我们有这个:
/.+@.*nabisco\.com$/.test(email)
但这个正则表达式的问题在于它会接受这样的电子邮件:
bar@foonabisco.com
但我们需要将其限制为
bar@foo.nabisco.com
我怎样才能成为第一个。所需的字符,以子域的存在为条件?
问题是这个正则表达式还需要匹配bar@nabisco.com,没有子域名。
答案 0 :(得分:2)
你可以使用pos的解决方案。先行:
warning: [unchecked] unchecked call to compare(T,T) as a member of the
raw type Comparator [multiant] for (int j=i; j>low &&
c.compare(source[dest[j-1]], source[dest[j]])>0; j--) {
<小时/>
这将查找(?=.*\bnabisco\b)\S*@\S+
两侧的单词边界,因此以下内容将匹配:
nabisco
虽然这些赢了:
bar@foo.nabisco.com
bar@nabisco.com
答案 1 :(得分:1)
/.+@(.*\.)?nabisco\.com$/.test(email)
这应该这样做。
添加(.*\.)?
后,您声明nabisco
之前的任何内容都必须由.
继承。括号后面的?
指定整个部分(比如foo.
匹配)或者没有匹配(因此foonabisco将不匹配)。
如果您不想匹配test@foo.bar.nabisco.com
之类的内容,那么您的正则表达式应为/.+@(.*?\.)?nabisco\.com$/
。
答案 2 :(得分:1)
您可以使用以下正则表达式
/^(https?|ftp):\/\/[.a-z]+\.domain\.com[.a-z0-9/-]+/
它可能对你有帮助