我已经做了一个正则表达式,它在开始时防止00,接受0-9,逗号和点。但没有停止双逗号或双点之间的数字。如何防止输入中出现双逗号/点?所以只接受单点和单逗号
我只想要5块5或者5块2。
如果已经使用点,则不接受逗号,反之亦然
import { useState } from 'react'
function App() {
const [lendData, setLendData] = useState({
lendValue: '',
lendFee: '',
})
function handleChange(e) {
let { name, value } = e.target
value = value.replace(/^0+|[^0-9,.]|,{2,}/g, '')
setLendData((prev) => {
return {
...prev,
[name]: value,
}
})
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<input
type='text'
inputMode='decimal'
name='fee'
id='fee'
placeholder='0%'
value={lendData.lendFee}
onChange={handleChange}
/>
这就是我目前为止对regex所做的
/^0+|[^0-9,.]|,{2,}/g
1条答案
按热度按时间r1wp621o1#
在正则表达式中使用lookaheadAssert,因为这将确保输入不包含连续出现的点或逗号。