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



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

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

我想提取要放在公司表中的域名。如果我有nick@nike.com,我想用正则表达式替换'Nike'中的公司名称。或者,在ryan@ryandrake.com,我希望公司名称是'Ryandrake'

我已经有了这个方法,我正在使用提取域,但还没有设法编辑它来提取名称:

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

将上面的方法修改为只返回'Nike''Ryandrake'的任何帮助都将非常有用!

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

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

示例:

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

DEMO

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

演示

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

演示

将捕获组仅用于捕获@旁边的单词chars。捕获组内的CCD_ 11也有助于捕获CCD_。

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

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

相关内容

  • 没有找到相关文章

最新更新