在JavaScript中通过正则表达式将数字格式化为特定格式

在JavaScript中通过正则表达式将数字格式化为特定格式,javascript,regex,extjs,Javascript,Regex,Extjs,我正努力让正则表达式按预期工作。。。这是通过regex属性专门针对extjstextfield的,但我认为这无关紧要,应该是一个通用的JavaScript/regex问题 基本上,给定一个字符串: 111222334.56 …我希望它是无效的,因为小数点左边有9个以上的数字。我提出了以下正则表达式: /^(\d{0,9}.{0,1}\d{0,2})$/ 这涵盖了几乎所有的基数:它正确地拒绝了一个以上的小数点,或者如果小数点右边有两个以上的数字。。。如果没有小数部分,或者右边的数字少于9,它就可以

我正努力让正则表达式按预期工作。。。这是通过regex属性专门针对extjstextfield的,但我认为这无关紧要,应该是一个通用的JavaScript/regex问题

基本上,给定一个字符串:

111222334.56

…我希望它是无效的,因为小数点左边有9个以上的数字。我提出了以下正则表达式:

/^(\d{0,9}.{0,1}\d{0,2})$/

这涵盖了几乎所有的基数:它正确地拒绝了一个以上的小数点,或者如果小数点右边有两个以上的数字。。。如果没有小数部分,或者右边的数字少于9,它就可以接受。所以这就是它应该做的一切。一种情况是,我需要它在小数点左边超过9位


我从来都不是regex的粉丝,所以我已经为此奋斗了一段时间,尽管我怀疑这是一个简单的答案。有人能指出我的愚蠢吗?:)谢谢

在正则表达式中,“.”是一个特殊字符,实际上表示“任何字符”。因此,您需要使用反斜杠将其转义:

^(\d{0,9}\.{0,1}\d{0,2})$

如果整数的最大长度为9,小数是可选的,那么使用该正则表达式可以得到9、10或11个整数。为什么不使用numberfield并利用extjs验证呢?