符合楼主的要求,包括空字符,不过第7点要求是不是搞错了,负数位?小数位吧。。有帮助麻烦点个采纳【本回答右上角】,谢谢~~

正则为:
^(-?\d{1,5}(\.\d{1,2})?)?$
以下为js测试
var re = /^(-?\d{1,5}(\.\d{1,2})?)?$/
console.log(re.test('1234'))//true,整数且整数位未超过5位
console.log(re.test('1.2'))//true,小数
console.log(re.test('-12.34'))//true,负数
console.log(re.test('-'))//false,单独-
console.log(re.test('.'))//false,单独.
console.log(re.test('-.'))//false,单独.
console.log(re.test('-0.'))//false
console.log(re.test('0.'))//false
console.log(re.test('.0'))//false
console.log(re.test(''))//true,可以为空
console.log(re.test('111235.12'))//false,整数位超5位
console.log(re.test('-0.123'))//false,小数位超2位