如何使用tcomb-form-native向字段添加电子邮件验证?

时间:2017-05-01 19:54:50

标签: javascript validation react-native tcomb tcomb-form-native

将tcomb-form-native库与native native一起使用 - 我已将keyboardType设置为email-address。如何在表单中添加正则表达式或电子邮件验证程序?我是否必须在提交函数上执行此操作(并抛出一个特殊错误?)或者是否可以使用库设置正则表达式验证字段?

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

1 个答案:

答案 0 :(得分:13)

您可以使用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,
});