如何修改这个正则表达式以允许只有一个点的数字?
/[^0-9\.]/g
它目前允许:
- 0
- 0.13
- 0.13.1(这应该是不允许的)
您的正则表达式与您所说的不匹配。您在字符类中使用了否定,并且也没有任何量词。目前它将匹配除.
.
根据您的要求,您可以使用此正则表达式:
/^\d+(\.\d+)?$/
使匹配成为积极的匹配:
/^\d*(\.\d+)?$/
任意数量的数字,可选地后跟一个点和至少一个数字。但是保持负匹配是不值得的。
如果您想禁止空字符串(原始正则表达式不会这样做),您可以这样做:
/^(?=.)\d*(\.\d+)?$/
但是你也可以只检查一个空字符串,反正看起来更好。
我想这应该做/^(\d*)\.{0,1}(\d){0,1}$/
或/^(\d*)\.?(\d){0,1}$/
(\d*)
表示小数点前的位数。
\.
后跟{0,1}
OR?
将确保只有一个点。
(\d){0,1}
只允许小数点后一位。
您可以尝试以下正则表达式 ^[-+]?\d*.?\d*$
尝试以下操作:
/^(\d*)(\.\d*)?$/g
尝试,
(value.match(/^\d+([.]\d{0,1})?$/))