如何使用 javascript 从电子邮件地址中提取用户名?

IT技术 javascript email
2021-01-20 01:56:15

给定以下电子邮件地址--someone@example.com--如何使用javascript 从地址中提取某人?

谢谢你。

6个回答

正则表达式匹配

有安全检查

var str="someone@example.com";
var nameMatch = str.match(/^([^@]*)@/);
var name = nameMatch ? nameMatch[1] : null;

写成一行

var name = str.match(/^([^@]*)@/)[1];

带替换的正则表达式

有安全检查

var str="someone@example.com";
var nameReplace = str.replace(/@.*$/,"");
var name = nameReplace!==str ? nameReplace : null;

写成一行

var name = str.replace(/@.*$/,"");

拆分字符串

有安全检查

var str="someone@example.com";
var nameParts = str.split("@");
var name = nameParts.length==2 ? nameParts[0] : null;

写成一行

var name = str.split("@")[0];

每个示例的性能测试

JSPerf 测试

JSPerf 测试的链接已损坏。:-/
2021-03-17 01:56:15
以功能方式: str.split("@").reduce(user => user)
2021-03-23 01:56:15
@epascarello - 为什么你(或这里的其他人)不使用简单的str.substring(0,str.indexOf("@"))? 由于您的声誉大约是我的 65 倍,我很确定我遗漏了一些东西,只是不知道是什么..
2021-04-03 01:56:15
不确定 javascript 语义,但我会使用这种模式:/.+(?=@)/
2021-04-06 01:56:15
@epascarello 我想我仍然可以从一个 5 岁的问题中学习。相同的规则仍然在很大程度上适用。如果有人在 2022 年访问此页面,我想那个人仍然可以从你对我的问题的回答中学到一些东西。
2021-04-10 01:56:15
"someone@example.com".split('@')[0]
喜欢解决方案的简单性
2021-03-31 01:56:15
var email = "someone@example.com";

var username = email.substring(0,email.indexOf('@'))

用户名:

"someone@example.com".replace(/^(.+)@(.+)$/g,'$1')

服务器:

"someone@example.com".replace(/^(.+)@(.+)$/g,'$2')

您可以在此 npm 包的帮助下从电子邮件中生成或获取用户名。

  1. 从电子邮件生成用户名

2. npm i generate-username-from-email

  1. 使用此代码从电子邮件中获取用户名:
const generateUsername = require('generate-username-from-email')
var email = "patidarparas13@gmail.com"
var username = generateUsername(email)
console.log(username)
//Output: patidarparas13