如何在 React.js 输入表单中只允许字母?

时间:2021-02-22 10:18:57

标签: javascript reactjs

我使用 react-hook-form 创建了一个表单。我想检查这个表格中输入的名字的字符。

我在模式部分创建了正则表达式,我的控件有效,

enter image description here

但我想阻止输入数字和符号。仅字母(包括土耳其语字符)

enter image description here

我该怎么做?输入掩码库有效吗?如果你能帮忙,我会很高兴。

代码和输出如下。谢谢。

<FormInput
  capitalize={{ textTransform: 'capitalize' }}
  // control={control}
  style="full"
  id="name"
  type="text"
  name="name"
  gtagStart={gtagStart}
  label="Name*"
  onChangeFunc={keyEvent => {
    const { value } = keyEvent.target;
    const lowerCaseAll = value.toLowerCase();
    keyEvent.target.value = lowerCaseAll.charAt(0).toUpperCase() + lowerCaseAll.slice(1);
  }}
  register={register({
    required: {
      message: 'Required',
      value: true,
    },
    pattern: {
      message: 'Please enter valid name',
      value: /^[a-zA-Z\u00C0-\u017F]+(?:\s[a-zA-Z\u00C0-\u017F]+)*$/,
    },
  })}
  error={errors.name}
/>

编辑:我找到了解决方案!感谢所有帮助我回答这个问题的人。

解决方案:使用正则表达式,我在输入中指定了要输入的字符,然后在 onChangeFunc 中定义它们。该函数具有字符控制和大写文本。

onChangeFunc={keyEvent => {
                  const { value } = keyEvent.target;
                  const lowerCaseAll = value.toLowerCase();
                  const replaceAll = lowerCaseAll.charAt(0).toUpperCase() + lowerCaseAll.slice(1);
                  keyEvent.target.value = replaceAll.replace(/[^a-zA-ZşŞıİçÇöÖüÜĞğ\- ]/g, '');
                }}

1 个答案:

答案 0 :(得分:-1)

您可以使用以下正则表达式 仅对字母和空格有效

^[a-zA-Z ]*$

查看并告诉我..