javascript - 两个不同字符串的单个正则表达式

标签 javascript regex

我需要编写一个正则表达式,它从以下两个字符串返回颜色值和大小值。

[{"id":"2","name":"Color","code":"COLOR","optionValue":{"value":"TANGERINE TANGO","priority":0,"altValue1":"ORANGE","altValue2":null}},{"id":"3","name":"Size","code":"SIZE","optionValue":{"value":"MEDIUM","priority":4,"altValue1":null,"altValue2":null}}]

[{"id":"3","name":"Size","code":"SIZE","optionValue":{"value":"MEDIUM","priority":4,"altValue1":null,"altValue2":null}},{"id":"2","name":"Color","code":"COLOR","optionValue":{"value":"PEACOCK BLUE","priority":0,"altValue1":"GREEN","altValue2":null}}]

目前我分别有两个不同的正则表达式。

1) COLOR(?:.*?)value":"([^"]+)(?:.*?)SIZE(?:.*?)value":"([^"]+)"
2) SIZE(?:.*?)value":"([^"]+)(?:.*?)COLOR(?:.*?)value":"([^"]+)"

有没有办法使用单个正则表达式来实现此目的?

最佳答案

使用JSON.parse ,更安全,更适合使用 JSON 字符串:

var strings = ['[{"id":"2","name":"Color","code":"COLOR","optionValue":{"value":"TANGERINE TANGO","priority":0,"altValue1":"ORANGE","altValue2":null}},{"id":"3","name":"Size","code":"SIZE","optionValue":{"value":"MEDIUM","priority":4,"altValue1":null,"altValue2":null}}]', '[{"id":"3","name":"Size","code":"SIZE","optionValue":{"value":"MEDIUM","priority":4,"altValue1":null,"altValue2":null}},{"id":"2","name":"Color","code":"COLOR","optionValue":{"value":"PEACOCK BLUE","priority":0,"altValue1":"GREEN","altValue2":null}}]'];

var cnt = 0;
strings.forEach(function(str) {
   var array = JSON.parse(str);
   cnt += 1;
   document.getElementById("r").innerHTML += "<b>Match " + cnt + "</b><br/>";
   array.forEach(function(object) {
     document.getElementById("r").innerHTML += object.optionValue.value + "<br/>";
   });
});
<div id="r"/>

您可以声明一个数组,并将获得的结果推送到该数组中以供以后使用。

关于javascript - 两个不同字符串的单个正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31263536/

相关文章:

javascript - ui-bootstrap-tpls-0.14.3.min.js :8 Uncaught ReferenceError: angular is not defined

javascript - 尽管包含下划线,但表达式不适用于下划线

regex - 重写除特定模式以外的所有内容的规则

Mysql查询,包含一个字符串,然后是电子邮件中的3个数字

regex - 如何使用# 作为 CoffeeScript heregex 的一部分?

javascript - 组件未在当前 View 中更新

javascript - 为结账添加一天的开始日 pikaday datepicker

javascript - 在Javascript(jquery)中,有没有办法检测页面 anchor 何时发生变化?

Java 匹配器组 : Understanding The difference between "(?:X|Y)" and "(?:X)|(?:Y)"

javascript - 'load' 事件监听器上的文档存在问题