是的,使用正则表达式的 formik 的表单验证不能像预期的那样使用 bangla 字体输入字段

yup form validation with formik using regex not working as expected with bangla font input field

我在注册模型中写了一个 regex 代码,但是当我在带有孟加拉字体的 formik 表单字段中输入时,正则表达式无法验证 bangla unicode值。

import * as Yup from "yup";
const banglaLang = /^([A-Za-z]|\p{InBengali})$/i;
class RegisterModel {
  /**
   * Model properties
   */
  constructor() {
    this.employeeNameBn = "";
  }

  /**
   * Validator schema
   */
  validator() {
    return Yup.object().shape({
      employeeNameBn: Yup.string()
        .required("user full name (in Bangla) is a required field")
        .matches(banglaLang, "Please type in bangla"),
    });
  }
}

export const Register = new RegisterModel();

您可以使用

/^[\p{sc=Bengali}\s]+$/u;

详情:

  • ^ - 字符串开头
  • [\p{sc=Bengali}\s]+ - 出现一次或多次
    • \p{sc=Bengali} - 孟加拉字符
    • \s - 空白字符
  • $ - 字符串结尾
  • u - 允许使用 Unicode 属性 类 的标志,如 \p{...}.

参见regex demo