只允许输入字母或数字

时间:2019-10-03 06:57:02

标签: javascript regex reactjs react-native

我正在React本机中开发应用程序,并希望允许用户仅输入字母或仅数字输入,因此如果第一个字符是字母,则用户将无法在其后输入任何数字,如果相反第一个字符是数字,然后用户将不能再输入任何字母。实际上甚至不知道如何启动它,我想最好是使用正则表达式检查第一个字符,然后基于此禁用键入字母/数字但不知道如何执行的操作。

(/[a-zA-Z]/).test(this.state.myValue.charAt(0)) ? "disable typing numbers" : "disable typing letters"

我的TextInput看起来像这样:

<TextInput
 onChangeText={e=> this.handleInput(e), "myValue"}
 value={this.state.myValue}
 />

handleInput(value, key) {
 /^(?:[A-Za-z]+|\d+)$/.test(value) ? "block number" : "block letter"

 this.setState({[key]: value)}
}

1 个答案:

答案 0 :(得分:3)

您可以使用

/^(?:[A-Za-z]+|\d+)$/.test(this.state.myValue)

详细信息

  • ^-字符串的开头
  • (?:-一个“容器”非捕获组的开始:
    • [A-Za-z]+-1个以上字母
    • |-或
    • \d+-1个以上数字
  • )-组结束
  • $-字符串的结尾。

请参见regex demoregex graph

enter image description here