簡體   English   中英

如何使用 javascript 從電子郵件地址中提取用戶名?

[英]How can I extract the user name from an email address using javascript?

給定以下電子郵件地址——someone@example.com——我如何使用 javascript 從地址中提取某人?

謝謝你。

正則表達式與匹配

有安全檢查

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 測試

"someone@example.com".split('@')[0]
var email = "someone@example.com";

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

您可以借助此 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

用戶名:

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

服務器:

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

我的 2021 年更新。 這將從包含多個 @ 符號的電子郵件地址正確輸出用戶名。 僅使用“@”拆分是不安全的,因為如果引用,則允許使用多個。

JSFiddle 示例

function getUsernameFromEmail(email){
    var domainArray = email.split('@')
    var domain = domainArray[domainArray.length-1]
    var reverseEmail = email.split( '' ).reverse( ).join( '' );
    var reverseDomain = domain.split( '' ).reverse( ).join( '' );
    var backwardUsername = reverseEmail.replace(reverseDomain+'@','')
    var username = backwardUsername.split( '' ).reverse( ).join( '' );
  return username;
}

console.log(getUsernameFromEmail('test@testhello@example.com'))

下面的示例代碼將返回myemailaddress

getUsername = (email) => {
   return email.substring(0, email.lastIndexOf("@"));
}

const userEmail = 'myemailaddress@gmail.com';
getUsername(userEmail);

// 輸入:test.user@example.com。 輸出:測試用戶
// 拆分用戶電子郵件,然后將單詞的每個第一個字符大寫。

   public getUserName(input: string): string {
         if (!input) {
           return ''
         }
         if (!input.includes('@')) {
           return input;
         } else {
           const cleanedInput = input.split('@')[0]?.replace(/[^\w]/g, ' ').split(' ');
           const capitalizedInput = cleanedInput?.map(word => {
             return word[0]?.toUpperCase() + word.substring(1);
           }).join(' ');
    
           return capitalizedInput;
         }
      }

string.split(separator, limit) 是你想要的方法

"someone@example.com".split("@")[0]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM