我正在尝试构建正则表达式。 缩写如下:
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是强迫性的。
请帮忙。
答案 0 :(得分:2)
试试这个:
^(?:\d+B)?(?:\d{1,3}M)?(?:\d{1,3}T)?(?:\dH)?$
您可以在此处regexr.com?2thld
进行测试 (?:)
是非捕获组,否则捕获的部分存储在变量
\d
等于[0-9]
?
+
表示一个或多个
{1,3}
至少说过一次最多三次
[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
,这取决于区域设置和内容。