RegEx для BMHT в последовательности - PullRequest
2 голосов
/ 13 апреля 2011

Я пытаюсь построить регулярное выражение. Сокращения следующие:

B - Billion
M - Million
T - Thousand
H - Hundred

Теперь, если я скажу 3M2T, это означает 3 million 2 thousand Но я не могу сказать 3T2M или я не могу сказать 3M2222T BMTH должен быть в последовательности и должен следовать стандартному правилу для создания числа. Я пошел до этого ([0-9]+[B]){1}+([0-9]+[M])?+([0-9]+[T])?+([0-9]+[H])? Но здесь B является обязательным.

Пожалуйста, помогите.

Ответы [ 2 ]

2 голосов
/ 13 апреля 2011

([0-9]{1,3}B)?([0-9]{1,3}M)?([0-9]{1,3}T)?([0-9]H)? Принимает до 3 цифр для каждого B / M / T или 1 для H (в этом порядке), каждая из групп является необязательной. Добавьте ограничения, соответствующие вашим потребностям ... Обратите внимание, что [0-9] не обязательно равен \d, это зависит от региональных настроек и прочего.

2 голосов
/ 13 апреля 2011

Попробуйте это:

^(?:\d+B)?(?:\d{1,3}M)?(?:\d{1,3}T)?(?:\dH)?$

Вы можете проверить это здесь regexr.com? 2thld

(?:) не группа захвата, в противном случае захваченная часть сохраняется в переменной

\d равно [0-9]

? после того, как группа или персонаж делает это необязательным

+ означает один или несколько

{1,3} говорит, по крайней мере, один раз, самое большее, три случая

[M] не требуется, если есть только 1 символ, тогда достаточно только M

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