我有一个文本区域和一个函数,它根据内容元素之间的空格分割粘贴的内容,并逐个将它们变成标签:
说我要粘贴以下内容:
1234,john smith,john@test.com 4312,jack gold,jack@yahoo.com 5678,Brian,brian@gmail.com
显然我用
$('#testArea').on("paste", ".maininput", function (event) {
var text = $(element).val();
var contentArray = text.split(" ");
}
结果应为3个标签,格式如下(用户手机号码,全名,电子邮件)
但是由于firstname和lastname之间有空格这一事实我无法得到正确的结果。
我想要实现的是当它在名字和姓氏之间时避开空格。
有谁知道怎么做?
答案 0 :(得分:4)
不要在空格上分开。而是扫描你想要的东西:
var s = "1234,john smith,john@test.com 4312,jack gold,jack@yahoo.com 5678,Brian,brian@gmail.com"
var lines = s.match(/\S[^,]+,[^,]+,[^ ]+/g)
for (var i=lines.length;i--;){
console.log(lines[i].split(','));
}
// ["5678", "Brian", "brian@gmail.com"]
// ["4312", "jack gold", "jack@yahoo.com"]
// ["1234", "john smith", "john@test.com"]
正则表达式说:
答案 1 :(得分:1)
最好使用正则表达式来匹配模式。
var str = "1234,john smith,john@test.com 4312,jack gold,jack@yahoo.com 5678,Brian,brian@gmail.co";
var matchGroups = str.match(/([^,]*,[^,]*,[^ ]*)/g); //look for pattern "XXX,XXX,XXX" followed by whitespace or end of line
console.log(matchGroups);
//Now work with the sections
for( var i=0;i<matchGroups.length;i++){
var parts = matchGroups[i].split(","); //split it into your parts on commas
console.log(parts);
}
答案 2 :(得分:0)
例如,将<space><digit>
替换为|<digit>
,然后拆分为|
:
text.replace(/ (\d)/g, "|$1").split("|")
示例:
"1234,john smith,john@test.com 4312,jack gold,jack@yahoo.com 5678,Brian,brian@gmail.com".replace(/ (\d)/g, "|$1").split("|")
["1234,john smith,john@test.com",
"4312,jack gold,jack@yahoo.com",
"5678,Brian,brian@gmail.com"]
答案 3 :(得分:0)
您可以运行for循环来检查空间的下一个字符,并根据它可以用
替换空格或保留原样。我的意思是如果下一个字符是一个数字,你可以简单地保留空格,如果它是一个字母更改空间
答案 4 :(得分:0)
jQuery( window ).load(function() {
jQuery("#FullNametest").change(function(){
var temp = jQuery(this).val();
var fullname = temp.split(" ");
var firsname='';
var middlename='';
var lastname = '';
firstname=fullname[0];
lastname=fullname[fullname.length-1];
for(var i=1; i < fullname.length-1; i++)
{
middlename = middlename +" "+ fullname[i];
}
jQuery('#FirstName').val(firstname);
jQuery('#middlename').val(middlename);
jQuery('#LastName').val(lastname);
});
});