拆分这个javascript字符串

时间:2014-05-30 06:13:18

标签: javascript regex

我有以下字符串

{
  "browser": "firefox",
  "dateTime": "28_May_2014_03_35_PM"
}
{
  "browser": "firefox",
  "dateTime": "28_May_2014_03_36_PM"
}

我想在打开{和关闭}大括号之间获取元素。

2 个答案:

答案 0 :(得分:1)

它看起来很像JSON编码的对象,但我看到有些不一致, 请注意您在开始字符串时的小编辑:

JSON.parse('[{"browser": "firefox","dateTime": "28_May_2014_03_35_PM"},{"browser": "firefox","dateTime": "28_May_2014_03_36_PM"}]');

//this will convert your string to an actual javascript object..

编辑:

如果你的json没有正确编码,你必须在这里和那里进行修正..你必须添加

  • 用方括号括起来:[{ ... }]
  • 每个对象后面的逗号{}, {}

您可以使用此代码完成此操作

假设var_string将包含您的字符串..

var_string = var_string.replace(/(\r\n|\n|\r)/gm,""); //removing line breaks;

var_string += '[' + var_string + ']'; //adding square brackets

var_string = var_string.replace(/}{/g, "},{"); //adding commas

var_string = JSON.parse(var_string); //parsing object

Json Syntax

答案 1 :(得分:1)

Sanjay,已经提供了关于使用正则表达式的所有免责声明,因为你确实询问了正则表达式可以为你做什么,这里有一个表达式可以匹配每个元素中的两个标记。它假设每个元素只有两个令牌,所以如果不是这样,请告诉我们。

{\s*"([^"]*)":\s*"([^"]*)",\s*"([^"]*)":\s*"([^"]*)"
  1. 第一个令牌的名称被捕获到第1组,其值被捕获到第2组。
  2. 第二个令牌的名称被捕获到第3组,其值被捕获到第4组。
  3. demo中,查看右下方面板中的“群组”。

    正则表达式意味着什么

    演示的右上角有一个逐个令牌的解释。

    如何使用正则表达式

    这对您来说可能很明显,但这里是检索值的示例代码(请参阅code demo中的输出):

    <script>
    var subject = '{ \
      "browser": "firefox", \
      "dateTime": "28_May_2014_03_35_PM" \
    } \
    { \
      "browser": "firefox", \
      "dateTime": "28_May_2014_03_36_PM" \
    } \
    ';
    var regex = /{\s*"([^"]*)":\s*"([^"]*)",\s*"([^"]*)":\s*"([^"]*)"/g;
    var match = regex.exec(subject);
    while (match != null) {
        document.write("First token name: ",match[1],"<br />");
        document.write("First token value: ",match[2],"<br />");
        document.write("Second token name: ",match[3],"<br />");
        document.write("Second token name: ",match[4],"<br />");
        match = regex.exec(subject);
    }
    
    </script>