Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式与html中的json匹配_Javascript_Json_Regex - Fatal编程技术网

Javascript正则表达式与html中的json匹配

Javascript正则表达式与html中的json匹配,javascript,json,regex,Javascript,Json,Regex,我正在编写一个chrome扩展,其中有一个函数可以解析来自另一个网站的html数据。我需要解析javascript标记中的两个Json字符串,如下所示,我想使用正则表达式分别捕获它们。我成功地用以下正则表达式捕获了第二部分: /iDetailData\s+=\s+({[^]+});/g 但第一部分似乎更难,因为它只能匹配到csrf令牌的末尾,而它期望匹配到};。我使用了以下正则表达式来捕获第一个json部分: /iDetailConfig\s+=\s+([^}]+)/g 如果你对这个案子有经

我正在编写一个chrome扩展,其中有一个函数可以解析来自另一个网站的html数据。我需要解析javascript标记中的两个Json字符串,如下所示,我想使用正则表达式分别捕获它们。我成功地用以下正则表达式捕获了第二部分:

/iDetailData\s+=\s+({[^]+});/g
但第一部分似乎更难,因为它只能匹配到csrf令牌的末尾,而它期望匹配到};。我使用了以下正则表达式来捕获第一个json部分:

/iDetailConfig\s+=\s+([^}]+)/g
如果你对这个案子有经验的话,你能帮我一下吗

<script type="text/javascript">
  var iDetailConfig = {
    'pageType': '',
    'pageid': 'laputa20150511141457',
    'offerid': '528011005304',
    'catid': '122238002',
    'dcatid': '53486008',
    'parentdcatid': '54546001',
    'isRangePriceSku': 'true',
    'isSKUOffer': 'true',
    'memberid': 'b2b-275072844861040',
    'loginId': '淘淘羊供应链',
    'islogin': 'false',
    'buyerUserID': '',
    'isTP': 'true',
    'isSlsjSeller': 'false',
    'loginurl': '',
    'topDomainTpl': '',
    'unit': '个',
    'priceUnit': '元',
    'isPreview': 'false',
    'isVirtualCat': 'false',
    'isLadderGroup': '',
    'refPrice': '339.00',
    'beginAmount': '1',
    'mergeVariable': 'asyncResourcesAliimg',
    'currentTime': '1488967781423',
    'isAccessSpecialSuppy': 'true',
    'domainType': '',
    'sourceType': 'freebuynowoffer',
    'hasConsignPrice': 'false',
    'mkcActivityId': '',
    'mkcActivityStartTime': '',
    'qrcode': 'https://gqrcode.alicdn.com/img?type=ali&amp;w=150&amp;h=150&amp;el=m&amp;text=http%3A%2F%2Fma.m.1688.com%2Frush.html%3Fsecret%3D8mNOFtQd',
    'minqrcode': 'https://gqrcode.alicdn.com/img?type=ali&amp;w=46&amp;h=46&amp;el=m&amp;text=http%3A%2F%2Fma.m.1688.com%2Frush.html%3Fsecret%3D8mNOFtQd',
    'officialActivityId': '',
    'userId': '2750728448',
    'end': 0,
    '_csrf_token': '9274f530e426ddb9af2d0f254d464fce'
  };

  var iDetailData = {
    "sku": {
      "price": "",
      "retailPrice": "",
      "canBookCount": "274",
      "saleCount": "45",
      "priceRange": [
        [1, 339.00],
        [2, 269.00]
      ],
      "priceRangeOriginal": [
        [1, 339.00],
        [2, 269.00]
      ],
      "skuProps": [{
        "value": [{
          "name": "黄白色(大象长颈鹿款))"
        }, {
          "name": "米白色(小羊小鸭款)"
        }, {
          "name": "蓝色(小牛小马款)"
        }, {
          "name": "粉色"
        }],
        "prop": "颜色"
      }, {
        "value": [{
          "name": "50*30*7/9cm"
        }],
        "prop": "尺寸规格"
      }],
      "skuMap": {
        "米白色(小羊小鸭款)&gt;50*30*7/9cm": {
          "canBookCount": 174,
          "skuId": 3201563335895,
          "specId": "7f68748bd9b704fa9708242ec570aa33",
          "saleCount": 3
        },
        "蓝色(小牛小马款)&gt;50*30*7/9cm": {
          "canBookCount": 44,
          "skuId": 3201563335894,
          "specId": "57e90efbfac8e7b69e73108a07d6198f",
          "saleCount": 10
        },
        "黄白色(大象长颈鹿款))&gt;50*30*7/9cm": {
          "canBookCount": 7,
          "skuId": 3201563335893,
          "specId": "3c4e75dbf21e70d5cea3dcb033bf0a9c",
          "saleCount": 7
        },
        "粉色&gt;50*30*7/9cm": {
          "canBookCount": 49,
          "skuId": 3201563335896,
          "specId": "5139112038a0bdef1f3d48e035448d48",
          "saleCount": 6
        }
      },
      "end": 0
    }
  };
  iDetailData.allTagIds = [];
  iDetailData.isSourcePromotion = false
  iDetailData.hasPurcharseMark = false
</script>

如果希望捕获包含};,试试这个:

/iDetailConfig\s+=\s+([^}]+});/g

抱歉,这些JSON字符串在哪里?@Phil您可以看到它被定义为变量:var iDetailConfig和var iDetailDataI我不理解您的问题。你到底想干什么?你已经有了对象iDetailConfig和iDetailData.Oops,这是我的不好没有解释好。我正在编写一个chrome扩展,其中有一个函数可以解析来自另一个网站的html数据。因为这是我要解析的网站的html代码,所以它不是我的!天啊,你帮我省了几个小时的时间。没注意到我漏掉了那个逗号,谢谢!