我正在使用请求库调用网页,并将响应正文存储为 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
正则表达式分解:
\b
:断言字边界sales_ranks
:匹配文字sales_ranks
\s*=\s*
:匹配两侧由空格包围的=
\[
:匹配文字[
(?:
:启动非捕获组\s*\[[^\]]+\],
:匹配空格后跟[...],
元素
)+
:结束非捕获组。+
表示匹配所有内部元素\s*
:匹配 0 个或多个空格\]
:匹配最后一个结束]
关于javascript - 正则表达式从内容获取数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45241613/