Javascript 当电子邮件和手机具有相同的文本框时,如何验证和处理输入
我正在寻找处理以下用例的方法。 用户可以输入电话号码或电子邮件地址,以便在ionic应用程序中获取密码重置令牌。我无法将UI更改为具有两个字段,因为BAs不会接受它。以下屏幕截图显示了模拟UI: 问题:1。由于只有一个输入字段,如何验证用户是否输入了电话号码或电子邮件地址?是否有明确的正则表达式 由于只有一个输入,但有两种不同类型的数据,如何确定模型?我应该只有一个类型为string的modelfield,并在UI验证后对这两种数据使用相同的modelfield,还是应该在此场景中使用两个不同的field作为模型 另一个挑战是在输入有效电子邮件地址或电话号码时启用“提交”按钮。电话号码可以是国际类型 像这样试试Javascript 当电子邮件和手机具有相同的文本框时,如何验证和处理输入,javascript,angular,typescript,ionic-framework,ionic2,Javascript,Angular,Typescript,Ionic Framework,Ionic2,我正在寻找处理以下用例的方法。 用户可以输入电话号码或电子邮件地址,以便在ionic应用程序中获取密码重置令牌。我无法将UI更改为具有两个字段,因为BAs不会接受它。以下屏幕截图显示了模拟UI: 问题:1。由于只有一个输入字段,如何验证用户是否输入了电话号码或电子邮件地址?是否有明确的正则表达式 由于只有一个输入,但有两种不同类型的数据,如何确定模型?我应该只有一个类型为string的modelfield,并在UI验证后对这两种数据使用相同的modelfield,还是应该在此场景中使用两个不同的
var input = "your angular model input";
var emailReg = /^([w-.]+@([w-]+.)+[w-]{2,4})?$/;
if(emailReg.test(input))
{
$emailModel = input;
} else {
var mobileRegex = /[0-9 -()+]+$/;
if((input.length > 6) && (intRegex.test(input)))
{
$mobileModel = input;
}
}
关于1。你可能只需要两个正则表达式——首先看看它是不是一个电话号码。如果失败,请检查电子邮件。如果失败,给用户一个警告,比如你确定这是正确的吗?。至于2。很难说。这个输入没有多大意义,但我要做的是保存放在那里的任何东西,即使在联系人下验证失败。你可以把事情说得更好,但你的想法是,你是通过这个联系的人。这实际上可能是非标准的,例如,打电话给XYZ,找Bob。感谢Vlaz的洞察力,我也这么想。我将实施它,看看它如何延伸。编辑后,我在之前的评论中确实提到了它,但3。不要禁用提交按钮。有太多有效的东西你无法解释。我知道有人交给你这个设计,你必须使用它,所以除非你能和他们谈清楚或者改变设计,只要让他们的设计中的一切都通过,除非提供了有效的输入,否则禁用按钮。然后我会要求他们定义什么对他们有效。有太多的数字可以被认为是有效的。除了询问鲍勃这是一个真实的东西,你也可以有一个分机号码,所以你打555-123,然后必须键入456,可以写为555-123 ex456。然后你有来自世界各地的各种地区数字。有些可能是,比如说,四位数长,不包括区号,其他可能长得多。我想有一个库可能会验证它们,但是一个正则表达式将是一个糟糕的选择。它将禁止一些有效的电子邮件。至少,我看到它不允许在名称部分使用+。在其他有效字符中。它也不处理非拉丁字符。假设您的意思是\w而不是w。而且显然email@domain1@domain2@domain3.com是一个有效的输入。这只是一个建议,他可以构造他想要的正则表达式