javascript以特殊字符分割字符串
Posted
技术标签:
【中文标题】javascript以特殊字符分割字符串【英文标题】:javascript splitting a string at special character 【发布时间】: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("_")
但是如何在其他电子邮件地址上拆分有效的特殊字符?
【问题讨论】:
什么是“特殊字符”?请注意,电子邮件地址中的所有字符均有效。 【参考方案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://***.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/
【讨论】:
以上是关于javascript以特殊字符分割字符串的主要内容,如果未能解决你的问题,请参考以下文章