首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
华为云
V2EX  ›  JavaScript

请教 js 正则匹配中有变量该如何处理啊

  •  
  •   F1024 · 141 天前 · 1025 次点击
    这是一个创建于 141 天前的主题,其中的信息可能已经有所发展或是发生改变。

    ";1627207:945375942;":{"price":"78.00"},

    ";1627207:771237690;":{"price":"88.00"},

    ";1627207:1349519332;":{"price":"58.00"},

    ";1627207:1554775267;":{"price":"68.00"},

    /1627207:945375942;":{"price":"(\d+.\d+)"/ //这样匹配结果 78

    1627207:XXXXXXXX 这种值是变量 每次循环获取到一个 分别来取得价格 该如何代写正则表达式啊

    第 1 条附言  ·  140 天前








    图一里有值 从图 2 里取价格 分别对应到图一的 span 上 顺序是乱的 所以要用变量正则
        1
    azh7138m   141 天前 via Android
    没看懂啥意思
    给个 test input 和期望的输出看下?
        2
    xqin   141 天前
    let a = `
    ";1627207:945375942;":{"price":"78.00"},

    ";1627207:771237690;":{"price":"88.00"},

    ";1627207:1349519332;":{"price":"58.00"},

    ";1627207:1554775267;":{"price":"68.00"},

    `

    let mm = {}

    a.replace(/;(\d+):(\d+);":\{"price":"(.+?)"\}/g, function (all, a, b, price) {
    if (typeof mm[a] === 'undefined')
    {
    mm[a] = {}
    }

    mm[a][b] = price;
    })

    console.log(JSON.stringify(mm, 0, 2))


    ```
    {
    "1627207": {
    "771237690": "88.00",
    "945375942": "78.00",
    "1349519332": "58.00",
    "1554775267": "68.00"
    }
    }
    ```

    得到 mm 之后, 想怎么取就怎么取..
        3
    mringg   141 天前 via iPhone
    前边也用正则匹配下就好了,提取值时候注意下分组就好了
        4
    azh7138m   141 天前
        5
    xqin   141 天前
    @azh7138m 不是, 他是想用 动态的方式生成正则.

    但其实不需要, 按我刚才说的方式来做, 直接全部匹配出来, 然后爱用哪个用哪个.
        6
    gengfire   140 天前 via iPhone
    reg = new RegExp(string + var);
        7
    F1024   140 天前
    @mringg
    前面的值 1627207:xxxxxxx 不是固定的而且顺序是被打乱的 是从其他地方取过来的
    所以要每次获取一个 1627207:xxxxxxx 来获取对应的 price
        8
    F1024   140 天前
    @azh7138m 我上图了 你看下 第二个图 新窗口打开下
        9
    F1024   140 天前
    @mringg 我上图了 麻烦帮我看看
        10
    azh7138m   140 天前 via Android
    当成 JSON 直接用啊,为啥搞这么麻烦
        11
    laqow   140 天前 via Android
    第一次替换:
    , →回车
    第二次查找:
    945375942.*?(\d+.\d+)
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1162 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 17ms · UTC 17:12 · PVG 01:12 · LAX 10:12 · JFK 13:12
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1