regex 如何使正则表达式接受单点或逗号

7d7tgy0s  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(88)

我已经做了一个正则表达式,它在开始时防止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

r1wp621o

r1wp621o1#

在正则表达式中使用lookaheadAssert,因为这将确保输入不包含连续出现的点或逗号。

/^0+|[^0-9,.]|(?<=\d)[.,](?!\d)|,[,.]|,{2,}/g

相关问题