【问题标题】:javascript splitting a string at special characterjavascript以特殊字符分割字符串
【发布时间】:2014-10-05 15:28:25
【问题描述】:

我正在尝试“智能”预填写表格,我想根据用户电子邮件地址预填写名字和姓氏输入,例如,

jon.doe@email.com 返回 Jon Doe
jon_doe@email.com 返回 Jon Doe
jon-doe@email.com 返回 Jon Doe

我已经设法得到@之前的字符串,

var email = letters.substr(0, letters.indexOf('@'));

但是当分隔符可以是多个值时,我不知道如何拆分(),我可以这样做,

email.split("_")

但是如何在其他电子邮件地址上拆分有效的特殊字符?

【问题讨论】:

  • 什么是“特殊字符”?请注意,电子邮件地址中的所有字符均有效。

标签: javascript string split email-validation


【解决方案1】:

正则表达式 --

email.split(/[_\.-]/)

这个匹配(因此拆分)任何(字符集,由 [] 表示)_、. 或 -。

这里是学习正则表达式的好资源:http://qntm.org/files/re/re.html

【讨论】:

  • 你应该对你的答案提供更多解释
【解决方案2】:

如果您定义了分隔符,下面的代码可以为您返回所有替代项。

var arr = ["_",".","-"];

var email = letters.substr(0, letters.indexOf('@'));
arr.map(function(val,index,rest){
   var r = email.split(val);
   if(r.length > 1){
     return r.join(' ');
   }
   return "";
}
);

【讨论】:

    【解决方案3】:

    您可以使用regular expression 拆分字符串。要匹配._-,您可以使用字符类,例如[.\-_]。 JavaScript 中正则表达式的语法是 /expression/,因此您的示例如下所示:

    email.split(/[\.\-_]/);
    

    请注意,反斜杠是为了防止 .- 被解释为特殊字符。 . 是代表任何字符的特殊字符类。在字符类中,-可用于指定范围,如[a-z]

    如果您需要一个动态的字符列表来分割,您可以使用RegExp 构造函数构建一个正则表达式。例如:

    var specialChars = ['.', '\\-', '_'];
    var specialRegex = new RegExp('[' + specialChars.join('') + ']');
    email.split(specialRegex);
    

    有关 JavaScript 正则表达式的更多信息,请访问 MDN

    【讨论】:

      【解决方案4】:

      我创建了一个 jsFiddle 来展示如何做到这一点:

      function printName(email){
          var name = email.split('@')[0];
          // source : http://stackoverflow.com/questions/650022/how-do-i-split-a-string-with-multiple-separators-in-javascript
          var returnVal = name.split(/[._-]/g);
          return returnVal;
      }
      

      http://jsfiddle.net/ts6nx9tt/1/

      【讨论】:

        【解决方案5】:

        您是正确的,您需要使用split function

        Split 函数通过使用参数来拆分字符串。可以通过正则表达式拆分多个值。对于您的使用,请尝试类似

        var re = /[\._\-]/;
        var split = email.split(re, 2);
        

        这应该会产生一个包含两个值的数组,即名字/名字。第二个参数是返回的元素数量。

        【讨论】:

          【解决方案6】:

          JavaScript 的 string split method 可以采用正则表达式。

          例如,以下内容将拆分为 .-_

          "i-am_john.doe".split(/[.\-_]/)
          

          返回以下内容。

          ["i", "am", "john", "doe"]
          

          【讨论】:

            【解决方案7】:

            您可以使用正则表达式来做到这一点,只需提供方括号中的字符列表并在必要时转义。

            email.split("[_-\.]");

            你是这个意思吗?

            【讨论】:

            • 如果要传入正则表达式,不能是字符串字面量。 split("[_-\.]"); 将按照准确的完整序列进行拆分 [_-\.]
            【解决方案8】:

            您可以对要拆分的内容使用正则表达式。例如,您可以拆分任何不是字母的内容:

            var parts = email.split(/[^A-Za-z]/);
            

            演示:http://jsfiddle.net/Guffa/xt3Lb9e6/

            【讨论】:

              猜你喜欢
              • 2019-11-03
              • 1970-01-01
              • 2019-03-19
              • 1970-01-01
              • 2022-10-07
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多