我正在努力"智能地"预填表单,我想根据用户的电子邮件地址预填充名字和姓氏输入,例如,
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("_")
但是如何在其他电子邮件地址上拆分有效的特殊字符?
答案 0 :(得分:8)
JavaScript的string split
method可以使用正则表达式。
例如,以下内容将分为.
,-
和_
。
"i-am_john.doe".split(/[.\-_]/)
返回以下内容。
["i", "am", "john", "doe"]
答案 1 :(得分:1)
您可以将正则表达式用于要拆分的内容。例如,您可以拆分任何不是字母的内容:
var parts = email.split(/[^A-Za-z]/);
答案 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;
}
答案 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 "";
}
);