【问题标题】:regex to find a value from a string in javascript正则表达式从javascript中的字符串中查找值
【发布时间】:2017-04-05 09:33:52
【问题描述】:

我有一个这样的json

{
  "foregroundDark": "##FF1F6D",
  "foregroundLight": "##F4FF80",
  "background": "##3029FF",
  "background2": "#FFFFFF",
  "barFontColors": ".cmtyx_color_1 { background-color:#FFBF36 !important; }.cmtyx_border_color_1 { border-color: #FFBF36 !important; }.cmtyx_text_color_1 { color: #FFBF36 !important; }.cmtyx_color_2 { background-color:#40EFFF !important; }.cmtyx_border_color_2 { border-color: #40EFFF !important; } .cmtyx_text_color_2 { color: #40EFFF !important; } .cmtyx_color_3 { background-color:#52FF42 !important; }.cmtyx_border_color_3 { border-color: #52FF42 !important; }.cmtyx_text_color_3 { color: #52FF42 !important; }.cmtyx_color_4 { background-color:#3DAEFF !important; }.cmtyx_border_color_4 { border-color: #3DAEFF !important; }.cmtyx_text_color_4 { color: #3DAEFF !important; }"
}

从这个json你可以找到一个键barFontColors。我需要所有这些类的颜色值.cmtyx_text_color_1,.cmtyx_text_color_2,.cmtyx_text_color_3,.cmtyx_text_color_4。也只有没有!important 的值。提前致谢。

【问题讨论】:

  • 是否可以更改响应?将颜色作为字符串传递到数组中会使 far 更有意义。就目前而言,您将不得不使用正则表达式剖析该字符串,这不会是漂亮或非常严格的代码。
  • 即使没有解析也很容易。提示:为此使用浏览器解析器。
  • @RoryMcCrossan 这是第三方回复,所以我无法更改。
  • @dfsq 不,亲爱的,我需要为我的 ui 解析。这是一种动态响应。
  • 也许您正在寻找这样的东西? jsfiddle.net/njjyj6u6一定要打开浏览器控制台查看结果。如果您不想/不需要知道该课程,则可以删除classN。我只是为了调试而添加的。

标签: javascript jquery regex


【解决方案1】:

为了从那个 unjasoned 字符串中获取元素,让我们将该字符串转换为可以解析为 javascript 对象的东西。

完成后,您可以从对象中访问它的元素。

var myObj = {
  "foregroundDark": "##FF1F6D",
  "foregroundLight": "##F4FF80",
  "background": "##3029FF",
  "background2": "#FFFFFF",
  "barFontColors": ".cmtyx_color_1 { background-color:#FFBF36 !important; }.cmtyx_border_color_1 { border-color: #FFBF36 !important; }.cmtyx_text_color_1 { color: #FFBF36 !important; }.cmtyx_color_2 { background-color:#40EFFF !important; }.cmtyx_border_color_2 { border-color: #40EFFF !important; } .cmtyx_text_color_2 { color: #40EFFF !important; } .cmtyx_color_3 { background-color:#52FF42 !important; }.cmtyx_border_color_3 { border-color: #52FF42 !important; }.cmtyx_text_color_3 { color: #52FF42 }.cmtyx_color_4 { background-color:#3DAEFF !important; }.cmtyx_border_color_4 { border-color: #3DAEFF !important; }.cmtyx_text_color_4 { color: #3DAEFF !important; }"
};


var tmpBarFontColors = '{'+ myObj.barFontColors.replace(/-/g,'_') +'}';
tmpBarFontColors = tmpBarFontColors.replace(/\.(\w+)\s*\{\s*(\w+)\s*:\s*([#\w]+)\s*([!\w]+)?[^}]*\}/g, '"$1":{"$2":"$3","flag":"$4"}');
tmpBarFontColors = tmpBarFontColors.replace(/\}\s*"/g,'}, "');

myObj.barFontColors = JSON.parse( tmpBarFontColors );

//console.log(tmpBarFontColors );
console.log("cmtyx color 1 is " + myObj.barFontColors.cmtyx_color_1.background_color);
console.log(myObj.barFontColors);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2012-06-09
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    相关资源
    最近更新 更多