我有这个正则表达式来验证电子邮件,过滤' John'来自' mycompany':
/^([a-z0-9][a-z0-9.]*)?john([a-z0-9.]*[a-z0-9])?@mycompany\.com$/
它主要是工作,只是验证:
john@mycompany.com
asd.john@mycompany.com
john.asd@mycompany.com
没有验证:
.john@mycompany.com
john.@mycompany.com
但它不应该允许:
asdjohn@mycompany.com
johnasd@mycompany.com
我怎么能解决它?
答案 0 :(得分:2)
您可以尝试在单词\b
周围添加单词边界john
,这似乎适用于您的特定情况:
var list = ['john@mycompany.com',
'asd.john@mycompany.com',
'john.asd@mycompany.com',
'.john@mycompany.com',
'john.@mycompany.com',
'asdjohn@mycompany.com',
'johnasd@mycompany.com']
var p = /^([a-z0-9][a-z0-9.]*)?\bjohn\b([a-z0-9.]*[a-z0-9])?@mycompany\.com$/
# ^^ ^^
list.map(email => ({[email]: p.test(email)}))
#[ { 'john@mycompany.com': true },
# { 'asd.john@mycompany.com': true },
# { 'john.asd@mycompany.com': true },
# { '.john@mycompany.com': false },
# { 'john.@mycompany.com': false },
# { 'asdjohn@mycompany.com': false },
# { 'johnasd@mycompany.com': false } ]
答案 1 :(得分:1)