Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当电子邮件和手机具有相同的文本框时,如何验证和处理输入_Javascript_Angular_Typescript_Ionic Framework_Ionic2 - Fatal编程技术网

Javascript 当电子邮件和手机具有相同的文本框时,如何验证和处理输入

Javascript 当电子邮件和手机具有相同的文本框时,如何验证和处理输入,javascript,angular,typescript,ionic-framework,ionic2,Javascript,Angular,Typescript,Ionic Framework,Ionic2,我正在寻找处理以下用例的方法。 用户可以输入电话号码或电子邮件地址,以便在ionic应用程序中获取密码重置令牌。我无法将UI更改为具有两个字段,因为BAs不会接受它。以下屏幕截图显示了模拟UI: 问题:1。由于只有一个输入字段,如何验证用户是否输入了电话号码或电子邮件地址?是否有明确的正则表达式 由于只有一个输入,但有两种不同类型的数据,如何确定模型?我应该只有一个类型为string的modelfield,并在UI验证后对这两种数据使用相同的modelfield,还是应该在此场景中使用两个不同的

我正在寻找处理以下用例的方法。 用户可以输入电话号码或电子邮件地址,以便在ionic应用程序中获取密码重置令牌。我无法将UI更改为具有两个字段,因为BAs不会接受它。以下屏幕截图显示了模拟UI:

问题:1。由于只有一个输入字段,如何验证用户是否输入了电话号码或电子邮件地址?是否有明确的正则表达式

由于只有一个输入,但有两种不同类型的数据,如何确定模型?我应该只有一个类型为string的modelfield,并在UI验证后对这两种数据使用相同的modelfield,还是应该在此场景中使用两个不同的field作为模型

另一个挑战是在输入有效电子邮件地址或电话号码时启用“提交”按钮。电话号码可以是国际类型

像这样试试

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是一个有效的输入。这只是一个建议,他可以构造他想要的正则表达式