【问题标题】:How can I extract the user name from an email address using javascript?如何使用 javascript 从电子邮件地址中提取用户名?
【发布时间】:2011-11-08 03:48:29
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: javascript email


    【解决方案1】:
    "someone@example.com".split('@')[0]
    

    【讨论】:

    • 喜欢简单的解决方案
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      正则表达式匹配

      有安全检查

      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 Tests

      【讨论】:

      • 不确定 javascript 语义,但我会使用这种模式:/.+(?=@)/
      • 以功能方式:str.split("@").reduce(user => user)
      • @epascarello - 你(或这里的任何人)为什么不使用简单的str.substring(0,str.indexOf("@"))?既然你的声望是我的 65 倍左右,我很确定我错过了什么,只是不知道是什么..
      • @epascarello 我想我仍然可以从一个 5 岁的问题中学习。同样的规则在很大程度上仍然适用。如果有人在 2022 年访问此页面,我想该人仍然可以从您对我的问题的回答中学到一些东西。
      • JSPerf 测试的链接坏了。 :-/
      【解决方案4】:

      用户名:

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

      服务器:

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

      【讨论】:

        【解决方案5】:
        var email = "someone@example.com";
        
        var username = email.substring(0,email.indexOf('@'))
        

        【讨论】:

          【解决方案6】:

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

          1. Generate username from email

          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
          

          【讨论】:

            【解决方案7】:

            我的 2021 年更新。这将从包含多个 @ 符号的电子邮件地址正确输出用户名。仅使用 '@' 拆分是不安全的,因为如果引用,则允许多个。

            JSFiddle example

            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'))
            
            

            【讨论】:

              【解决方案8】:

              下面的示例代码将返回myemailaddress

              getUsername = (email) => {
                 return email.substring(0, email.lastIndexOf("@"));
              }
              
              const userEmail = 'myemailaddress@gmail.com';
              getUsername(userEmail);
              

              【讨论】:

                猜你喜欢
                • 2022-01-15
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-01-14
                • 2010-12-20
                • 2013-05-08
                • 1970-01-01
                相关资源
                最近更新 更多