[英]javascript splitting a string at special character
我试图“智能地”预填充表单,我想根据用户的电子邮件地址预填充名字和姓氏输入,例如,
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("_")
但是如何拆分其他电子邮件地址有效的特殊字符?
JavaScript的字符串split
方法可以采用正则表达式。
例如,以下内容将分开.
, -
和_
。
"i-am_john.doe".split(/[.\-_]/)
返回以下内容。
["i", "am", "john", "doe"]
您可以将正则表达式用于要拆分的内容。 例如,你可以拆分任何不是字母的东西:
var parts = email.split(/[^A-Za-z]/);
您可以使用正则表达式拆分字符串。 要匹配.
, _
或-
,您可以使用字符类,例如[.\\-_]
。 JavaScript中正则表达式的语法是/expression/
,因此您的示例如下所示:
email.split(/[\.\-_]/);
请注意,反斜杠是为了防止.
-
被解释为特殊字符。 .
是一个表示任何字符的特殊字符类。 在字符类中, -
可用于指定范围,例如[az]
。
如果需要分割动态字符列表,可以使用RegExp
构造函数构建正则表达式。 例如:
var specialChars = ['.', '\\-', '_'];
var specialRegex = new RegExp('[' + specialChars.join('') + ']');
email.split(specialRegex);
您可以使用正则表达式来执行此操作,只需提供方括号中的字符列表,并在必要时转义。
email.split( “[_- \\。]”);
你是这个意思吗?
常用表达 -
email.split(/[_\.-]/)
这个匹配(因此拆分)任何(字符集,由[])_,。或 - 表示。
这是学习正则表达式的好资源: http : //qntm.org/files/re/re.html
你是正确的,你需要使用拆分功能 。
拆分函数通过使用参数来拆分字符串来工作。 可以通过正则表达式拆分多个值。 为了您的使用,尝试类似的东西
var re = /[\._\-]/;
var split = email.split(re, 2);
这应该导致一个数组有两个值,第一个/第二个名称。 第二个参数是返回的元素数。
我创建了一个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;
}
如果您定义了分隔符,则代码可以为您返回所有替代选项。
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 "";
}
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.