Мы просто используем простой JavaScript .match () с помощью REGEX, у меня проблема с соответствием приведенному ниже REGEX pattern
.
После сканирования приведенного ниже QR-кода я пытаюсь сопоставить серийный номер число, которое равно 682321973
при использовании приведенного ниже REGEX
(?:(?:(?:[a-zA-Z0-9-])|(?:\u001d))*21([a-zA-Z0-9-]{1,15})\u001d.*$)|(?:S?([a-zA-Z0-9-]{1,18}))
Причина использования этого БОЛЬШОГО регулярного выражения заключается в том, что SERIAL
число начинается после (21) на изображении ниже (21) 682321973
Таким образом, мы будем игнорировать, или мы не будем фиксировать число или буквы до (21), как только оно совпадет с (21)
, мы захватим оставшееся число, т.е. 682321973
Но проблема в том, НИЖЕ регулярное выражение не совпадает, потому что есть повторение числа 21 в серийном номере 682321973
Результат 973
Но странная вещь в серийном номере, если есть 22
то есть 682322973
вместо 682321973
тогда мы получаем правильный результат, т.е. 682322973
Когда мы сканируем приведенный ниже QR-код,
текст, который мы получаем: "\u001d010405686902130021682321973\u001d24011020250\u001d422276"
(без кавычек)
Фрагмент, который я получаю неверный результат для серийного номера 682321973
Примечание: в приведенном ниже результате мы берем индекс 1 в результате
const string = "\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 result = string.match(regex);
console.log(result);
// expected output: Array ["12344", "682321973"]
Фрагмент, который я получаю правильный результат для серийного номера 682322973
const string = "\u001d010405686902130021682322973\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 result = string.match(regex);
console.log(result);
// expected output: Array ["12344", "682322973"]
Так может кто-нибудь, пожалуйста, помогите мне, если число повторяется в серийном номере 682321973
Мне нужно это, чтобы захватить 682321973
вместо просто 973
![GS1 DATA Matrix](https://i.stack.imgur.com/EhzaY.png)
Для справки Ниже прикреплен еще один, просто чтобы серийный номер всегда начинался с (21)
,