解释:
^
匹配字符串开始
(-)?
匹配
负号
,问号表示可选
\d+
表示匹配
整数部分
为多个数字
(\.\d+)?
匹配小数部分,问号表示可选
$
匹配字符串结尾
到底需要匹配哪些数字?正整数:^[1-9]\d*$
正数:^(?:0\.\d*[1-9]|[1-9]\d*(?:\.\d*[1-9])?)$
非负整数:^(?:0|[1-9]\d*)$
非负数:^(?:0|[1-9]\d*)(?:\.\d*[1-9])?$
整数:^(?:0|\-?[1-9]\d*)$
实数:^(?:0|\-?(?:0\.\d*[1-9]|[1-9]\d*(?:\.\d*[1-9])?))$