只允许输入字母或数字

Jac*_*cki 2 javascript regex reactjs react-native

我正在 React Native 中开发应用程序,并希望允许用户只输入字母或数字,所以如果第一个字符是字母,那么用户将无法在此之后输入任何数字,如果第一个字符是相反的数字,然后用户将无法在此之后键入任何字母。实际上不知道如何启动它,我想最好的方法是使用正则表达式检查第一个字符,然后基于此禁用键入字母/数字,但不确定如何操作。

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

我的 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)}
}
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 6

您可以使用

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

细节

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

请参阅正则表达式演示正则表达式图

在此处输入图片说明

  • @Jacki我做了一个小演示。试试这个https://snack.expo.io/@karthik.01/textinput (2认同)