Rails + REGEX:从电子邮件域中提取名称

Rails + REGEX: Extract name from email domain

我正在根据以下逻辑在公司 table 中创建一条新记录:

if company.nil?
  Company.create!(name: User.get_company_name(self.email)), domain: User.get_domain(self.email))
end

我想提取域名以放置在公司 table 中。 IE。如果我有nick@nike.com,我想用正则表达式代替'Nike'作为公司名称。或者,对于 ryan@ryandrake.com,我希望公司名称为 'Ryandrake'

我已经有了用于提取域的方法,但还没有设法对其进行编辑以提取名称:

def self.get_domain(email_address)
  email_address.gsub(/.+@([^.]+.+)/, '') // Returns 'nike.com' or 'ryandrake.com'
end

任何将上述方法修改为 return 'Nike''Ryandrake' 的帮助都将非常有帮助!

使用此正则表达式捕获 @. 之间的字母:(?<=@)(.*)(?=\.) 然后替换为整个字符串。

DEMO

gsub(/.+(?<=@)(.*)(?=\.).+/, '')

DEMO

仅将捕获组用于捕获 @ 旁边的单词字符。 .+ 捕获组内部也有助于捕获 .com 部分。

email_address.gsub(/.+@([^.]+).+/, '')

email_address.gsub(/.+@([^.]+)\..+/, '')

您只需 email_address[/(?<=@)[^.]+/] 即可获得所需的名称。

def self.get_domain(email_address)
  email_address[/(?<=@)[^.]+/]
end

示例:

"pavan@gmail.com"[/(?<=@)[^.]+/]
 => "gmail"

DEMO