Это правильное регулярное выражение, по крайней мере, в JavaScript движке, используемом VS Code (см. этот ответ ), но я думаю, что проверка кода * VS 1004 * VS Code запутана (так как был я) по неэкранированным фигурным скобкам - открытие {
в первой группе и закрытие }
во второй.
Как подсказывают @ rioV8 и @Nick в комментариях, вы необходимо убрать их с помощью back sla sh \
, чтобы заставить его работать:
("id":\{"\$oid":)[0-9]+(\},"product_id":)[0-9]+(,")
Вот небольшая демонстрация, демонстрирующая, что исходное регулярное выражение работает в JS:
const regex = /("id":{"\$oid":)[0-9]+(},"product_id":)[0-9]+(,")/;
const sample = '{"id":{"$oid":973},"product_id":973,"product_name":"Scotch - Queen Anne","product_amount":92,"product_group":"not perishable","distribution_to":"The Salvation Army Visalia - Neighborhood Market","distribution_from":"MCFB","expiration_date":"8/24/2020","pack_date":"4/19/2021","sell_by_date":"12/6/2020","use_by_date":"2/18/2021","created_at":"2020-04-24 03:15:40 -0400","updated_at":"2020-04-24 03:15:40 -0400"},';
const result = sample.match(regex);
let output = [
`full match:\t${result[0]}`,
`group 1:\t${result[1]}`,
`group 2:\t${result[2]}`,
`group 3:\t${result[3]}`
]
document.querySelector("#result").innerText = output.join('\n');