【问题标题】:How do I add email validation to a field with tcomb-form-native?如何使用 tcomb-form-native 向字段添加电子邮件验证?
【发布时间】:2017-05-01 19:54:50
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 我对 t.refinement 做了同样的事情——细化和子类型有什么区别?
    • 似乎子类型被重命名为细化,所以,它们基本相同。我编辑了答案,以关注最新的文档
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多