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'
的帮助都将非常有帮助!
使用此正则表达式捕获 @
和 .
之间的字母:(?<=@)(.*)(?=\.)
然后替换为整个字符串。
或
gsub(/.+(?<=@)(.*)(?=\.).+/, '')
仅将捕获组用于捕获 @
旁边的单词字符。 .+
捕获组内部也有助于捕获 .com
部分。
email_address.gsub(/.+@([^.]+).+/, '')
或
email_address.gsub(/.+@([^.]+)\..+/, '')
您只需 email_address[/(?<=@)[^.]+/]
即可获得所需的名称。
def self.get_domain(email_address)
email_address[/(?<=@)[^.]+/]
end
示例:
"pavan@gmail.com"[/(?<=@)[^.]+/]
=> "gmail"
我正在根据以下逻辑在公司 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'
的帮助都将非常有帮助!
使用此正则表达式捕获 @
和 .
之间的字母:(?<=@)(.*)(?=\.)
然后替换为整个字符串。
或
gsub(/.+(?<=@)(.*)(?=\.).+/, '')
仅将捕获组用于捕获 @
旁边的单词字符。 .+
捕获组内部也有助于捕获 .com
部分。
email_address.gsub(/.+@([^.]+).+/, '')
或
email_address.gsub(/.+@([^.]+)\..+/, '')
您只需 email_address[/(?<=@)[^.]+/]
即可获得所需的名称。
def self.get_domain(email_address)
email_address[/(?<=@)[^.]+/]
end
示例:
"pavan@gmail.com"[/(?<=@)[^.]+/]
=> "gmail"