Разделитель групп в матрице данных 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);