用于BMHT的RegEx序列

时间:2011-04-13 12:51:51

标签: regex

我正在尝试构建正则表达式。 缩写如下:

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 个答案:

答案 0 :(得分:2)

试试这个:

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

您可以在此处regexr.com?2thld

进行测试

(?:)是非捕获组,否则捕获的部分存储在变量

\d等于[0-9]

在组或角色使其成为可选项后

?

+表示一个或多个

{1,3}至少说过一次最多三次

只有1个字符时不需要{p> [M],只有M就够了

答案 1 :(得分:2)

([0-9]{1,3}B)?([0-9]{1,3}M)?([0-9]{1,3}T)?([0-9]H)?每个B / M / T最多3位数,H最多1个(按此顺序),每个组都是可选的。添加适合您需求的约束...... 请注意[0-9]不一定等于\d,这取决于区域设置和内容。