我有一组结构化数据到一个字符串中,我需要通过 Javascript 中的常规表达式对其进行迭代。
这是数据示例:
|KEY1|VALUE 1 |KEY2| VALUE 2 |KEY3| OTHER VALUE WITH ANY CHARACTER LIKE SPACES, |PIPES| AND WHAT YOU WANT |KEY4| VALUE4
我需要解析它们并创建一个结构化对象(或数组),如下所示:
myObject.KEY1 = "VALUE 1"
myObject.KEY2 = "VALUE 2"
myObject.KEY3 = "OTHER VALUE WITH ANY CHARACTER LIKE SPACES, AND WHAT YOU WANT"
myObject.KEY4 = "VALUE4"
我已经得到了带有简单正则表达式的键:[|](.+?)[|]
,但我不知道如何迭代它们及其各自的值。
最佳答案
我假设键是由表达式 \|KEY[0-9]+\|
定义的,因为这是包含 |KEY1|< 的最简单方法
到 |KEY4|
,同时也不包括 |PIPES|
。
如果您的目标是使用循环和正则表达式匹配,而不是使用单个复杂的正则表达式或使用 indexOf() 等函数进行实际解析,那么这可以通过负向前瞻来完成。
var x = "|KEY1|VALUE 1 |KEY2| VALUE 2 |KEY3| OTHER VALUE WITH ANY CHARACTER LIKE SPACES, |PIPES| AND WHAT YOU WANT |KEY4| VALUE4";
var map = {};
while(x.length > 0) {
var key = x.match(/\|KEY[0-9]+\|/)[0];
x = x.substr(key.length);
var value = x.match(/(.(?!\|KEY[0-9]+\|))*/)[0];
x = x.substr(value.length);
map[key] = value;
}
alert(JSON.stringify(map, null, 4));
关于javascript - 使用 Regex 和 JS 迭代字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28055315/