javascript - 正则表达式从内容获取数组?

标签 javascript arrays regex

我正在使用请求库调用网页,并将响应正文存储为 JavaScript 变量。响应正文由页面的 HTML 组成。忽略这是 javascript 的事实,我无法编辑下面的代码。将其视为我需要执行正则表达式的文本字符串。

下面是响应正文的片段,但是我需要执行一些正则表达式来提取 sales_rank 数组的内容。

到目前为止,我有以下内容,但我很难知道下一步该去哪里:

\sales_ranks =\[()/g

(function() {
            var chart = $(document).find('#flot-chart'),
                sales_ranks = [
                                                [1498101635000, 0],
                                                [1498187306000, 0],
                                                [1498274424000, 0],
                                                [1498360866000, 0],
                                                [1498447842000, 0],
                                                [1498534646000, 0],
                                                [1498620767000, 0],
                                                [1498706919000, 0],
                                                [1498793120000, 259312],
                                                [1498879764000, 490981],
                                                [1498965369000, 633892],
                                                [1499052315000, 792398],
                                                [1499138463000, 215732],
                                                [1499225377000, 435596],
                                                [1499311360000, 110890],
                                                [1499398681000, 299988],
                                                [1499484963000, 194321],
                                                [1499571308000, 184823],
                                                [1499657546000, 282991],
                                                [1499744175000, 96775],
                                                [1499830311000, 399822],
                                                [1499916360000, 483213],
                                                [1500002994000, 284743],
                                                [1500089388000, 163017],
                                                [1500175564000, 101008],
                                                [1500261919000, 131600],
                                                [1500349007000, 60496],
                                                [1500434715000, 134451],
                                                [1500521280000, 151996],
                                                [1500607500000, 145079],
                                        ]

如果有人知道如何做到这一点,如果您能提供帮助,我们将不胜感激。或者,如果您知道在将 html 存储在 javascript 变量中时提取数组的方法,那也可以工作

最佳答案

对于给定的文本,以下正则表达式应该有效:

/\bsales_ranks\s*=\s*\[(?:\s*\[[^\]]+\],)+\s*\]/ig

RegEx Demo

正则表达式分解:

  • \b :断言字边界
  • sales_ranks :匹配文字 sales_ranks
  • \s*=\s* :匹配两侧由空格包围的 =
  • \[ :匹配文字 [
  • (?: :启动非捕获组
    • \s*\[[^\]]+\], :匹配空格后跟 [...], 元素
  • )+ :结束非捕获组。 + 表示匹配所有内部元素
  • \s* :匹配 0 个或多个空格
  • \] :匹配最后一个结束 ]

关于javascript - 正则表达式从内容获取数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45241613/

相关文章:

regex - [\0-9] 在正则表达式 (perl) 中是什么意思?

php - 模板引擎-正则表达式,DOMDocument和xpath或其他内容?

javascript - 异步ajax调用阻塞UI

mysql - 如何填充 datagridview VB.Net

linux - 如何只替换 Perl 中 IP 地址的前三个八位字节

javascript - 将国家/地区的 Javascript 数组映射到新数组中

arrays - 在 .data 中对数组进行索引会导致地址远高于数组

javascript - 检查数组值是升序还是降序

javascript - 如何将表记录标识符传递给客户端

javascript - 试图在 Jest native react 中仅模拟某些命名导出(例如 PushNotificationsIOS)