如何用 yup 验证 firstName 中的每个字符?

How to validate each character in firstName with yup?

我很难验证输入中的每个字符。如果除了简单的字母字符之外还有其他内容,我想 return firstName 的无效输入,即。如果有数字或特殊字符。

这是我的代码,我正在寻找可以提供我想要的行为的代码:

const FormSchema = yup.object().shape({
    firstName: yup
      .string()
      .max(40).
      .required(),

...

<Formik initialValues={initialValues} validationSchema={FormSchema} validateOnMount onSubmit={formSubmit}>
  <Field name="firstName">
    {(props: FieldProps) => (
      <TextField {...props.field} {...textErrors(props.meta)} fullWidth label={t('firstName')} type="text" />
                )}
  </Field>

好吧,原来我昨天尝试时缺少美元符号 $,用于告诉正则表达式搜索到给定字符串输入的末尾。

const FormSchema = yup.object().shape({
    firstName: yup
      .string()
      .matches(/^[A-Za-z ]*$/, 'Please enter valid name')
      .max(40)
      .required(),

上面的答案对我不起作用,但这个答案有效:

const FormSchema = yup.object().shape({
    firstName: yup
      .string()
      .matches(/^[aA-zZ\s]+$/, 'Please enter valid name')
      .max(40)
      .required(),