如何在输入字段中仅允许英文字母?

问题描述 投票:0回答:5

所以,这是我的输入字段:

<input type={type} name={name} />

我怎么才能只允许英文字母?

这是RegEx,我相信我应该使用:/[A-Za-z]/ig

https://regex101.com/r/upWFNy/1

我假设onChange()事件应该用于setState()event.target.value的组合。

谢谢。

PS。我需要打字这个WHILE。

javascript html reactjs forms validation
5个回答
4
投票

您可以在输入中使用pattern属性。

    <input pattern = “[A-Za-z]”>

2
投票

我会尝试这个onChange功能:

onChange={(e) => {
  let value = e.target.value

  value = value.replace(/[^A-Za-z]/ig, '')

  this.setState({
    value,
  })
}}

请参阅codepen:https://codepen.io/bozdoz/pen/vzJgQB

我的想法是用^反转你的正则表达式匹配器并用''替换所有非A-z字符


2
投票

这应该是诀窍,除了ascii 0-127之外的所有字符都应该被排除在外,o到127也会给你空格,+, - ,/和标点符号这是有用的,如果你只想要字母那么[^ Az]应该这样做,如果你需要非空格字符,那么[^ Az \ s]应该工作:

document.getElementById('english').addEventListener('input', function(){
  this.value = this.value.replace(/[^\x00-\x7F]+/ig, '');
});

反应方式:

class InputEnglish extends React.Component {
  constructor(){
    super();
    this.state = {value: ''};
    this.onChange = this.onChange.bind(this);
  }
  onChange(e) {
    let val = e.target.value.replace(/[^\x00-\x7F]/ig, '');
    this.setState(state => ({ value: val }));
  }
  render() {
    return (<input 
        value={this.state.value}
        onChange={this.onChange}
    />);
  }
}

https://codepen.io/anon/pen/QVMgrd


1
投票

您可以在元素上使用/[A-Za-z]/正则表达式和input事件处理程序(这将在每次键入新字符时触发)。如下所示:

const regex = /[A-Za-z]/;
function validate(e) {
  const chars = e.target.value.split('');
  const char = chars.pop();
  if (!regex.test(char)) {
    e.target.value = chars.join('');
    console.log(`${char} is not a valid character.`);
  }
}
document.querySelector('#myInput').addEventListener('input', validate);
<label for="myInput">Type some text:</label>
<input id="myInput" type="text" />

0
投票

我不能这样做不允许数字,因为我没有写出其他答案,但你可以去keycode.info并输入数字并从选择器中删除它们。该网站将返回您按下的任何键盘项的键码

© www.soinside.com 2019 - 2024. All rights reserved.