写在前面
实践过程
NumericLiteral ::
DecimalLiteral
DecimalIntegerLiteral . DecimalDigits(opt) ExponentPart(opt)
DecimalIntegerLiteral
(0)
([1-9][0-9]*)
.
.
DecimalDigits
[0-9]*
ExponentPart
(e|E)(\+|\-)?([0-9])*
可以推导出
/^((0)|([1-9][0-9]*))?.?([0-9]*)((e|E)?(\+|\-)?([0-9]*))?$/
. DecimalDigits ExponentPart(opt)
可以推导出
/^((0)|([1-9][0-9]*))?.?([0-9]*)(((e|E)?(\+|\-)?([0-9])*)*)$/
DecimalIntegerLiteral ExponentPart(opt)
/^((0)|([1-9][0-9]*))?.?([0-9])((e|E)?(\+|\-)?([0-9]\))?$/
最终
/^((0)|([1-9][0-9]*))?.?([0-9]*)((e|E)?(\+|\-)?([0-9]*))?$/
BinaryIntegerLiteral
/^0(b|B)(0|1)+$/
OctalIntegerLiteral
/^0(O|o)[0-7]+$/
HexIntegerLiteral
/^0(x|X)([0-9a-fA-F])+$/
简单总结
/^(((0)|([1-9][0-9]*))?.?([0-9]*)((e|E)?(\+|\-)?([0-9]*))?)|(0(b|B)(0|1)+)|(0(O|o)[0-7]+)|(0(x|X)([0-9a-fA-F])+)$/
简化
/^((((0)|([1-9]\d*))?.?(\d*)((e|E)?(\+|\-)?(\d*))?)|(0(b|B)(0|1)+)|(0(O|o)[0-7]+)|(0(x|X)([0-9a-fA-F])+))$/
1
/^((((0)|([1-9]\d*))?.?(\d*)((e|E)?(\+|\-)?(\d*))?)|(0(b|B)(0|1)+)|(0(O|o)[0-7]+)|(0(x|X)([0-9a-fA-F])+))$/
结果测试
- 十六进制数: 0x0233acdfACDF
- 八进制数:0o023657
- 二进制数: 0b01010111
- 浮点数:.2373736
- IEEE 754:1.2e+32
- 特殊情况 .0
写在后面
- 祝大家多多发财