Regex получает G, H, D с двумя числами до - PullRequest
1 голос
/ 09 октября 2019

Я пытаюсь получить письмо и его цифры раньше. Но регулярное выражение не работает, как я думаю.

Ват может быть не так?

регулярное выражение: /(\d{1,2}G|H|D)/g

входы:

Zddsad 5G (25)
Gtest 5D
DTest 2H

ожидаемый результат:

5G
5D
2H

фактический результат:

5G
D
D
H

пример выполнения: regexr.com/4mhab

Есть идеи, что может быть не так?

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Вы должны использовать набор символов ([]), а не чередование (|):

/(\d{1,2}[GHD])/g

Если вы хотите использоватьЧередование, вам нужна группа:

/(\d{1,2}(G|H|D))/g
0 голосов
/ 09 октября 2019

Вы получаете эти результаты, потому что вы соответствуете 1 или 2 цифрам, за которыми следует G, или только H или только D.

Вам не нужна группа захвата, чтобы получить совпадения, но вы можете использоватькласс символов и границы слов \b, чтобы совпадения не являлись частью большего слова.

\b\d{1,2}[GHD]\b

Regex demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...