使用javascript从字符串中分离值

使用javascript从字符串中分离值,javascript,jquery,Javascript,Jquery,我有一个字符串,其中每个值都在[]之间,并且在末尾有一个。如何从字符串中分离所有值 以下是示例字符串: [value01][value02 ][value03 ]. [value04 ] //want something like this v1 = value01; v2 = value02; v3 = value03; v4 = value04 值的数量不是恒定的。如何从该字符串中分别获取所有值?使用正则表达式指定多个分隔符。请查看以下帖子: 这是如何工作的 .split(/

我有一个字符串,其中每个值都在
[]
之间,并且在末尾有一个
。如何从字符串中分离所有值

以下是示例字符串:

[value01][value02 ][value03 ]. [value04 ]

//want something like this 
v1 = value01;
v2 = value02;
v3 = value03;
v4 = value04  

值的数量不是恒定的。如何从该字符串中分别获取所有值?

使用正则表达式指定多个分隔符。请查看以下帖子:

这是如何工作的

.split(/[\[\]\.\s]+/)
在找到以下一个或多个字符的点拆分字符串:
[.
。现在,由于这些字符也位于字符串的开头和结尾,
.shift()
丢弃第一个元素,
.pop()
丢弃最后一个元素,这两个元素都是空字符串。但是,您可能需要使用
.filter()
,您可以将第2行和第3行替换为:

var arr = str.split(/[\[\]\.\s]+/).filter(function(elem) { return elem.length > 0; });
现在,您可以使用jQuery/JS迭代这些值:

$.each( arr, function(i,v) {
    console.log( v ); // outputs the i'th value;
});

arr.length
将提供您拥有的元素数。

如果您希望获得介于“[”和“]”之间的字符,并且数据是规则的,并且始终具有模式:

'[chars][chars]...[chars]'
然后可以获取用于获取非“[”或“]”字符序列的字符:

它返回一个数组,因此值为:

Match得到了广泛的支持,因此没有跨浏览器问题。

这里有一个小问题:

正则表达式模式:/(\w)+/ig
使用\w(字母数字组合)匹配所有单词。空格、括号、点、方括号都是不匹配的,所以它们不会返回

我要做的是创建一个对象,将结果保存在键/值对中,例如v1:“value01”。您可以迭代该对象,也可以直接使用objRes.v1访问这些值

var str = '[value01][value02 ][value03 ]. [value04 ]';
var myRe = /(\w)+/ig;
var res;
var objRes = {};
var i=1;
while ( ( res = myRe.exec(str) ) != null )
{
    objRes['v'+i] = res[0];
    i++;    
}
console.log(objRes);

试试看。我在这里看不到任何问题。请指定您的要求。请提供示例输入和输出,它将如何处理[value01][value02][valu[e]03]这样的情况。当然,很快就会解决。
var values = '[value01][value02 ][value03 ][value04 ]'.match(/[^\[\]]+/g) 
["value01", "value02 ", "value03 ", "value04 "]
var str = '[value01][value02 ][value03 ]. [value04 ]';
var myRe = /(\w)+/ig;
var res;
var objRes = {};
var i=1;
while ( ( res = myRe.exec(str) ) != null )
{
    objRes['v'+i] = res[0];
    i++;    
}
console.log(objRes);