javascript - 使用 Regex 和 JS 迭代字符串

标签 javascript regex key-value

我有一组结构化数据到一个字符串中,我需要通过 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));

http://jsfiddle.net/eyL7yhwr/

关于javascript - 使用 Regex 和 JS 迭代字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28055315/

相关文章:

javascript - JSLint : 'numeral' was used before defined?

java - 使用预编译的正则表达式模式提高速度

php - 使用 preg_replace 捕获数学

c++ - 使用正则表达式 c++ 从单词和定界符之间的字符串中提取所有子字符串

java - 循环访问对象数组并访问特定的键/值字段

javascript - javascript中宏任务和微任务谁先?

javascript - 为什么要在react中输出之前的props?

javascript stoppropagation 不适用于 ajax .load

dictionary - 如何从 Swift 中的字典中获取键的值?

node.js - 具有 Node.js 绑定(bind)的磁盘查找表