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

时间:2015-06-29 04:56:06

标签: ruby-on-rails regex ruby-on-rails-4 gsub

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

#include<stdio.h>

int main()
{
    int i=0,a;
    a=(i++)?1:0;

    printf("%d",a);
    getchar();
    return 0;
}

我想提取要放置在Company表中的域名。 IE浏览器。如果我有nick@nike.com,我想使用正则表达式替换if company.nil? Company.create!(name: User.get_company_name(self.email)), domain: User.get_domain(self.email)) end 作为公司名称。或者,对于ryan@ryandrake.com,我希望公司名称为'Nike'

我已经使用这种方法来提取域名,但我们没有设法编辑它来提取名称:

'Ryandrake'

任何有关修改上述方法以返回def self.get_domain(email_address) email_address.gsub(/.+@([^.]+.+)/, '\1') // Returns 'nike.com' or 'ryandrake.com' end 'Nike'的帮助都会非常有用!

3 个答案:

答案 0 :(得分:1)

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

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

<强> 实施例

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

DEMO

答案 1 :(得分:0)

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

DEMO

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

DEMO

答案 2 :(得分:0)

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

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

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