RegEX - Найти строку магнитной карты для подстрок дорожки 1 и дорожки 2 - PullRequest
0 голосов
/ 21 марта 2019

Устройство считывания с карт - это просто ввод с клавиатуры, при котором после считывания с карты в любом текстовом поле отображается строка.

Я бы хотел разделить следующее:

дорожка 1: которая ограничена % и ?

Дорожка 2: которая ограничена ; и ?

Однако не все карты имеют обе дорожки, у некоторых есть только первая, а у некоторых только вторая.

Я бы хотел найти RegEx, который анализирует дорожку 1 и дорожку 2, если они существуют.

Вот образцы карт, которые генерируют эти строки:

%12345?;54321?               (has both Track 1 & Track 2)
%1234678?                    (has only Track 1)
;98765?                      (has only Track 2)
%93857563932746584?;38475?   (has both Track 1 & Track 2)

Вот пример, из которого я строю:

%([0-9]+)\?) // for first Track
;([0-9]+)\?) // for second Track

1 Ответ

2 голосов
/ 21 марта 2019

Это регулярное выражение будет соответствовать вашим группировкам треков:

/(?:%([0-9]+)\?)?(?:;([0-9]+)\?)?/g

(?:            // non-capturing group
    %          // match the % character
    (          // capturing group for the first number
        [0-9]  // match digits; could also use \d
        +      // match 1 or more digits
    )          // close the group
    \?         // match the ? character
)
?              // match 0 or 1 of the non-capturing group
(?:
    ;          // match the ; character
        [0-9]  
        +
    )
    \?
)
?

Кстати, я использовал regexr , чтобы выяснить паттерны регулярных выражений здесь (бесплатный сайт, нет принадлежности).

...