使用缩写准备数字

时间:2011-04-15 10:12:27

标签: regex flex

RegEx for BMHT in a sequence是我以前的帖子。 我正在寻找使用缩写构建一个数字,并使用正则表达式构建一个数字。

现在我知道如何使用BMTH缩写验证数字。

现在我的下一个也是最后一个目标是使用缩写构建一个数字。 例如-2T2H22.55应显示为-2,222.55 -2M2H22.63应显示为-2,000,222.63

帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

Flex的脚本语言ActionScript是一个像JavaScript一样的ECMAScript实现,所以正则表达式文字必须用斜杠分隔,例如:/^(?:\d+B)?(?:\d{1,3}M)?(?:\d{1,3}T)?(?:\d{1}H)?(\.[0-9]*)?/

但是那个正则表达式仍有一些问题。首先,你不考虑数百位后的减号或两位数。并且,虽然小数点可能是可选的,但如果 存在,您应该要求它后跟至少一个数字(所以+,而不是*组)。

最后,您需要捕获各种组件,以便可以使用它们来构建数字。这是我的结果:

/^(-?)(?:(\d+)B)?(?:(\d{1,3})M)?(?:(\d{1,3})T)?(?:(\d)H)?(\d{0,2})(\.\d+)?$/

减号(如果存在)将在组$1中捕获。其余组件将分为$2$7。您可以在回调函数中使用它们来构造数字。另外,请注意此正则表达式中的所有内容都是可选的;它会匹配一个空字符串或只是一个连字符,所以你需要检查它。