我需要编写一个正则表达式,它从以下两个字符串返回颜色值和大小值。
[{"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/