7

使用带有 react native 的 tcomb-form-native 库 - 我已将键盘类型设置为电子邮件地址。如何向表单添加正则表达式或电子邮件验证器?我是否必须在提交功能上执行此操作(并引发特殊错误?)或者是否可以使用库设置正则表达式验证字段?

我注意到 tcomb-validation https://github.com/gcanti/tcomb-validationlibrary有一个 RegExp 类型字段 - 但我没有看到任何有关如何使用它的示例。显示的示例似乎测试了字段是否为正则表达式模式,这是一个令人困惑的用例,因为您通常希望根据正则表达式模式测试字段,而不是在字段中输入正则表达式模式。

4

1 回答 1

18

您可以使用 RegExp 检查创建自己的子类型

const Email = t.refinement(t.String, email => {
  const reg = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/; //or any other regexp
  return reg.test(email);
});

const Person = t.struct({
  name: t.String,
  email: Email,
});
于 2017-06-10T10:12:45.110 回答