Разделитель групп в матрице данных GS1 с использованием REGEX

Мы используем матрицу данных GS1 (прилагается к изображению ниже)
(01) 04056869021300
(240) 11020250
(422) 276
(21) 682321973

Здесь я пытаюсь захватить серийный номер, мы знаем, что ИДЕНТИФИКАТОР ПРИЛОЖЕНИЯ серийного номера (21), который означает, что число после 21 является серийным номером.

Говорят, что перед каждым ИИ есть невидимый персонаж.<FNC1> который используется для разделителя групп, который также может быть <GS> и его значение Unicode \\U001d

После сканирования результата под QR-кодом, мы получаем в строке результат
"scanText": "\u001d010405686902130021682321973\u001d24011020250\u001d422276"

и мы используем следующее регулярное выражение для захвата регулярного
выражения серийного номера: (?:(?:(?:[a-zA-Z0-9-])|(?:\u001d))*21([a-zA-Z0-9-]{1,15})\u001d.*$)|(?:S?([a-zA-Z0-9-]{1,18}))

Здесь мы фиксируем все числа, которые идут после 21, но дело в том, что у самого серийного номера есть номер 21 результат, который я получаю 973

Вопрос:
после сканирования QR-кода в строке результата сканирования мы не находим разделителя групп, например<FNC1> or <GS>Как я могу это сделать? и как я могу использовать<FNC1> or <GS>в моем QR-коде? Как отделить серийный номер?

const paragraph = '\u001d010405686902130021682321973\u001d24011020250\u001d422276';
const regex = "(?:(?:(?:[a-zA-Z0-9-])|(?:\u001d))*21([a-zA-Z0-9-]{1,15})\u001d.*$)|(?:S?([a-zA-Z0-9-]{1,18}))";
const found = paragraph.match(regex);

console.log(found);

0 ответов

Другие вопросы по тегам