javascript在特殊字符处拆分字符串

时间:2014-08-12 14:04:37

标签: javascript string split email-validation

我正在努力"智能地"预填表单,我想根据用户的电子邮件地址预填充名字和姓氏输入,例如,

  

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('@'));

但是当分隔符可以是多个值时,无法解决如何split(),我可以这样做,

email.split("_")

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

8 个答案:

答案 0 :(得分:8)

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

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

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

返回以下内容。

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

您可以使用正则表达式来执行此操作,只需在方括号中提供字符列表,并在必要时进行转义。

email.split(" [_- \。]&#34);

这是你的意思吗?

答案 3 :(得分:0)

正则表达式 -

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

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

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

答案 4 :(得分:0)

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

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

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

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

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

有关JavaScript中正则表达式的更多信息,请参见MDN

答案 5 :(得分:0)

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

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

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

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

答案 6 :(得分:0)

我创建了一个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/

答案 7 :(得分:0)

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

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 "";
}
);