从模式电子邮件地址

时间:2016-11-26 10:31:46

标签: javascript string split

我正在尝试从一系列电子邮件地址中获取名字和姓氏。每个电子邮件地址都有一个模式。模式是first.last@company.com但在某些情况下,它可能类似于first.middle.last@company.com。重点是电子邮件中的名字和姓氏之间可能有某些内容,但并非总是如此。 主要模式始终是相同的,第一个字符串,直到第一个点始终是第一个名称,并且姓氏始终是从前一个DOT开始的@ char之前的最后一个字符系列。 例子:

charles.bukowski@company.com 第一名:查尔斯 最后:Bukowski的

charles.mark.bukowski@copmany.com 第一名:查尔斯 最后:Bukowski的

charles.x.markus.bukowski@company.com 第一名:查尔斯 最后:Bukowski的

获得名字很容易。我有以下变量:

var empmail = 'charles.x.markus.bukowski@company.com'
var empname = empmail.substring(0, empmail.indexOf("."));

我找不到找出姓氏的方法。

4 个答案:

答案 0 :(得分:3)

使用正则表达式的String#match方法获取名称。

var empmail = 'charles.x.markus.bukowski@company.com'

var match = empmail.match(/^(\w+)\..*\.(\w+)@/);

var empname = match[1];
var emplname = match[2];

console.log(
  empname,
  emplname
)

Regex explanation here

或使用String#lastIndexOf方法

var empmail = 'charles.x.markus.bukowski@company.com'
var empname = empmail.substring(0, empmail.indexOf(".")); // get first name

// get complete name part
var namePart = empmail.substring(0, empmail.indexOf("@"));
// get last name from name part
var emplname = namePart.substring(namePart.lastIndexOf('.') + 1);

console.log(
  empname,
  emplname
)

或使用String#splitArray#pop方法。

var empmail = 'charles.x.markus.bukowski@company.com'
// split by `.` and get first element
var empname = empmail.split('.')[0];

// split name part and get last element from array
var emplname = empmail.split('@')[0].split('.').pop();

console.log(
  empname,
  emplname
)

答案 1 :(得分:1)

使用String.prototype.split()方法:

var empmail = 'charles.x.markus.bukowski@company.com'

var fullName = empmail.split('@')[0].split('.');

var firstName = fullName[0];
var lastName = fullName[ fullName.length-1 ] 

答案 2 :(得分:0)

您也可以针对给定的电子邮件ID使用此方法

var emailfirstname = a.slice(0,a.indexOf('@')).split('.')[0]

var emailLastname = a.slice(0,a.indexOf('@')).split('.')[a.slice(0,a.indexOf('@')).split('.').length - 1]

答案 3 :(得分:0)

这应该得到你的姓氏:

的javascript:

empmail.match(/[a-z]+(?=@)/i);

PHP:

preg_match("/[a-z]+(?=@)/", $input_line, $output_array);