javascript 来自简码的数组
javascript array from shortcode
我需要一些帮助来从短代码构建数组。
问题是匹配正则表达式部分。
我的短代码如下所示:
[email_image,id=1,c=member,fS=15,lH=20]
期望的输出:
{name: 'email_image', id: '1', c: 'member', fS: '15', lH: '20'}
如何更改我的功能 (regex)
以使其正常工作?
thanks.sepp.
function ajax(ed){
var str = tinyMCE.activeEditor.getContent();
var re = /\[email_image([^\]]*)\]/g;
var found = str.match(re);
found.map(function(item){
//console.log(item); // [email_image,id=1,c=member,fS=15,lH=20] ....
arraytophp = {name: 'email_image', id : item.split(',')[1].split('=')[1], c: item.split(',')[2].split('=')[1], fS : item.split(',')[3].split('=')[1], lH: item.split(',')[4].split('=')[1].replace(']','')};
// PROBLEM START *************************************************************
var arraytophp_test = {};
item.match(/([\w-]+)=([^,]+)/g).forEach(function(attribute) {
//console.log(attribute)
attribute = attribute.match(/([\w-]+)=(.+?)/);
arraytophp_test[attribute[1]] = attribute[2];
});
console.log(arraytophp_test);
// PROBLEM END **************************************************************
jQuery.ajax({
url: "StringImage_Ajax/ajaxImage",
type: "POST",
dataType: "json",
async:false,
data: {"data" : JSON.stringify(arraytophp)}
}).done(function(data){
string = data.string;
tinyMCE.activeEditor.setContent(tinyMCE.activeEditor.getContent().replace(item,string));
});
});
}
已编辑:
我已经这样修改了你的代码。
var arr = str.slice(1, -1).split(','), arraytophp_test = {};
$.each(arr, function(key, value){
if(value.indexOf('=') === -1){
arraytophp_test.name = value;
}else{
var k = value.split('=')[0];
var v = value.split('=')[1];
arraytophp_test[k] = v;
}
})
其中 "str" 是您的字符串...
基本 javascript 可以很好地完成此操作,而不是 RegEx。
当然 RegEx 很棒,但有时它似乎被用来用大锤砸鸡蛋。
var item = '[email_image,id=1,c=member,fS=15,lH=20]';
var result = item.slice(1, -1).split(',').
reduce(function (a,b) {
var v=b.split('=');if(v.length===1) a.name=v[0];
else a[v[0]]=v[1];return a}
,{});
console.log(result);
我需要一些帮助来从短代码构建数组。 问题是匹配正则表达式部分。
我的短代码如下所示:
[email_image,id=1,c=member,fS=15,lH=20]
期望的输出:
{name: 'email_image', id: '1', c: 'member', fS: '15', lH: '20'}
如何更改我的功能 (regex)
以使其正常工作?
thanks.sepp.
function ajax(ed){
var str = tinyMCE.activeEditor.getContent();
var re = /\[email_image([^\]]*)\]/g;
var found = str.match(re);
found.map(function(item){
//console.log(item); // [email_image,id=1,c=member,fS=15,lH=20] ....
arraytophp = {name: 'email_image', id : item.split(',')[1].split('=')[1], c: item.split(',')[2].split('=')[1], fS : item.split(',')[3].split('=')[1], lH: item.split(',')[4].split('=')[1].replace(']','')};
// PROBLEM START *************************************************************
var arraytophp_test = {};
item.match(/([\w-]+)=([^,]+)/g).forEach(function(attribute) {
//console.log(attribute)
attribute = attribute.match(/([\w-]+)=(.+?)/);
arraytophp_test[attribute[1]] = attribute[2];
});
console.log(arraytophp_test);
// PROBLEM END **************************************************************
jQuery.ajax({
url: "StringImage_Ajax/ajaxImage",
type: "POST",
dataType: "json",
async:false,
data: {"data" : JSON.stringify(arraytophp)}
}).done(function(data){
string = data.string;
tinyMCE.activeEditor.setContent(tinyMCE.activeEditor.getContent().replace(item,string));
});
});
}
已编辑:
我已经这样修改了你的代码。
var arr = str.slice(1, -1).split(','), arraytophp_test = {};
$.each(arr, function(key, value){
if(value.indexOf('=') === -1){
arraytophp_test.name = value;
}else{
var k = value.split('=')[0];
var v = value.split('=')[1];
arraytophp_test[k] = v;
}
})
其中 "str" 是您的字符串...
基本 javascript 可以很好地完成此操作,而不是 RegEx。
当然 RegEx 很棒,但有时它似乎被用来用大锤砸鸡蛋。
var item = '[email_image,id=1,c=member,fS=15,lH=20]';
var result = item.slice(1, -1).split(',').
reduce(function (a,b) {
var v=b.split('=');if(v.length===1) a.name=v[0];
else a[v[0]]=v[1];return a}
,{});
console.log(result);