Мы используем матрицу данных GS1 (прилагается под изображением)
(01) 04056869021300
(240) 11020250
(422) 276
(21) 682321973
Здесь я я пытаюсь получить серийный номер. Мы знаем, что ИДЕНТИФИКАТОР ПРИЛОЖЕНИЯ с серийным номером (21) означает, что число после 21 - это серийный номер.
Говорят, что перед каждым ИИ есть невидимый символ <FNC1>
, который используется для Разделителя групп, который также может быть <GS>
, а его значение в Юникоде \\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);
![enter image description here](https://i.stack.imgur.com/KZtF1.jpg)