繁体   English   中英

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

[英]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]/);

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

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

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

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

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

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

有关JavaScript 中正则表达式的更多信息可以在MDN上找到。

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

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

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

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

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM