只能输入数字且只有一个负号和一个小数点。其中负号只能在数字前,小数点只能在数字后。
<input oninput="value=value.replace(/[^0-9.-]|(?<=\..*)\.|(?<!\d)\.|(?!^)-/g, '')">
[^0-9.-]
:这是一个字符集合,匹配任何不是数字、小数点或负号的字符。^在字符集合中表示取反的意思,即匹配不在集合内的字符;
(?<=\..*)\.
:这是一个正向后行断言,表示匹配一个小数点后面还有其他字符的情况,并且匹配这个小数点。(?<=\..*)
是指小数点后面有任意多个字符;
(?<!\d)\.
:这是一个负向前行断言,表示匹配小数点前面不是数字的情况,即小数点前面没有数字的情况;
(?!^)-
:这是一个负向前行断言,表示匹配负号,但不能是行的开头。