How to allow only numbers in textbox in reactjs?

后端 未结 7 548
感情败类
感情败类 2020-12-03 05:03

How to allow only numbers in textbox in reactjs using regular expression only?

7条回答
  •  渐次进展
    2020-12-03 05:36

    Basic idea is:

    Use controlled component (use value and onChange property of input field), and inside onChange handle check whether the entered value is proper number or not. Update the state only when entered value is a valid number.

    For that use this regex: /^[0-9\b]+$/;

    onChange handler will be:

    onChange(e){
        const re = /^[0-9\b]+$/;
    
        // if value is not blank, then test the regex
    
        if (e.target.value === '' || re.test(e.target.value)) {
           this.setState({value: e.target.value})
        }
    }
    

    Working example:

    class App extends React.Component{
       constructor(){
          super();
          this.state = {value: ''};
          this.onChange = this.onChange.bind(this)
       }
       
       onChange(e){
          const re = /^[0-9\b]+$/;
          if (e.target.value === '' || re.test(e.target.value)) {
             this.setState({value: e.target.value})
          }
       }
       
       render(){
         return 
       }
    }
    
    ReactDOM.render(,document.getElementById('app'))
    
    
    
    

提交回复
热议问题