所以,这是我的输入框:
<input type={type} name={name} />
如何只允许输入英文字母?
我认为应该使用以下正则表达式:
/[A-Za-z]/ig
。参考链接:https://regex101.com/r/upWFNy/1 我假设应该使用
onChange()
事件,并结合setState()
和event.target.value
来实现。谢谢。
PS. 我需要在输入时实现这一功能。
所以,这是我的输入框:
<input type={type} name={name} />
/[A-Za-z]/ig
。onChange()
事件,并结合setState()
和event.target.value
来实现。我建议尝试使用这个 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字符。
value
始终为空。当我输入文本时,它会动态填充。这就是为什么在value={this.state.value}
处失败的原因。@bozdoz - user8608046$(this).val($(this).val().replace(/[^A-Za-z]/ig, ''))
。 - George Ogden <input pattern = “[A-Za-z]”>
import React from "react";
class InputValidationDemo extends React.Component {
constructor(props) {
super(props);
this.state = {
type: "text",
name: "username",
value: ""
};
}
onChange = (e) => {
const re = /^[A-Za-z]+$/;
if (e.target.value === "" || re.test(e.target.value))
this.setState({ value: e.target.value });
};
render() {
const { type, name, value } = this.state;
return (
<div>
<input type={type} name={name} value={value} onChange={this.onChange} />
</div>
);
}
}
export default InputValidationDemo;
以下翻译可能对您有所帮助,只留下html标签,请按照要求返回结果。此代码将排除除英文字符以外的所有字符(ascii 0-127),0至127还包括空格、+、-、/和标点符号,如果您只需要字母,则应使用[^A-z],如果需要非空格字符,则应使用[^A-z\s]:
document.getElementById('english').addEventListener('input', function(){
this.value = this.value.replace(/[^\x00-\x7F]+/ig, '');
});
React方式:
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}
/>);
}
}
/[A-Za-z]/
和一个事件处理程序,每当元素的值更改时就会触发。像下面这样:
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" />
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" />
alphacheck(e: any) {
const regex = /[A-Za-z]/;
const chars = e.target.value.split('');
const char = chars.pop();
console.log(char);
if (!regex.test(char)) {
e.target.value = chars.join('');
alert("Please enter only alphabets");
e.preventDefault();
return false;
}
else {
return true;
}
}
<input placeholder="Full Name" formControlName="fullName" pattern="[a-zA-Z]*" (keypress)="alphacheck($event)" name="fullname" value="" type="text" class="form-control">