如何在该正则表达式非捕获组之后捕获所有 13 位数字

How to capture all 13 digits after that regex non-capture group

我正在尝试从 javascript

中的 localstorage 获取 SKU 的产品

该项目是一个 html 字符串,我正在尝试找出一个 regex 来捕获 SKU id

localstorage return 看起来像这样:

<li class="cart__item">SKU: MLB2046549757 | NAME: Notebook Multilaser Legacy Book Pc310 Preta 14.1 , Intel Celeron N3000 4gb De Ram 64gb Ssd, Intel Hd Graphics 1366x768px Windows 10 Home | PRICE: 15</li><li class="cart__item">SKU: MLB2046549757 | NAME: Notebook Multilaser Legacy Book Pc310 Preta 14.1 , Intel Celeron N3000 4gb De Ram 64gb Ssd, Intel Hd Graphics 1366x768px Windows 10 Home | PRICE: 15</li>

我尝试 (?:SKU\: ){13} 正则表达式来获取例如MLB2046549757 SKU id 但没有用。

我需要捕获SKU: 之后的所有13位数字并将其保存在一个数组中。

有人知道我该怎么做吗?

如果您确信自己拥有一致的内容,请尝试:/(?<=SKU:\s)[\dA-Z]{13}/g

const items = document.querySelectorAll('li');

let SKU = [...items].flatMap(li => li.textContent.match(/(?<=SKU:\s)[\dA-Z]{13}/g));

console.log(SKU)
<li class="cart__item">SKU: MLB2046549757 | NAME: Notebook Multilaser Legacy Book Pc310 Preta 14.1 , Intel Celeron N3000 4gb De Ram 64gb Ssd, Intel Hd Graphics 1366x768px Windows 10 Home | PRICE: 15</li>
<li class="cart__item">SKU: MLB2046585666 | NAME: Notebook Multilaser Legacy Book Pc310 Preta 14.1 , Intel Celeron N3000 4gb De Ram 64gb Ssd, Intel Hd Graphics 1366x768px Windows 10 Home | PRICE: 15</li>

试试这个:

(SKU:\s)(.{13})

(?<=SKU:\s)(.{13})

第二个正则表达式只会产生 SKU 之后的 13 个位置: 参见 demo

-干杯!