繁体   English   中英

HTML输入只接受数字和电子邮件

[英]HTML input accept only numbers and email

如何设置html输入以仅接受数字和电子邮件ID?

<input id="input" type="text" />
<input id="input" type="number" />
<input id="input" type="email" />

在w3schools上查看此信息

...我看到你想要相同的输入,所以你会坚持使用文本,然后使用正则表达式检查输入

\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b.

然后你需要验证你的号码的正则表达式

您可以将输入设置为type="email"type="tel"

您可以针对电话号码和电子邮件运行简单的正则表达式。 这很可能不会解决所有问题,但它会给你一个起点。

伪代码:

//if input is phone
  // do something
// else if input is email
  // do something else
// else (when it is neither)
  // throw an error

或者你甚至可以缩短它

// if input is phone or input is email 
  // do something
//else
  //trow error

您可以在regex101.com的库中找到大量的正则表达式解决方案。 有一大堆电子邮件和电话号码验证器。

一个应该检查两者(我没有深入研究正则表达式)的是: \\(^\\+[0-9]{9,15}$)|(^.+@.+\\..+$)\\i

如果输入字符串是电话或电子邮件,则应该为true。 但是,正如我上面所说,它很可能需要改进。

如上面评论中所述,如果您想接受8位数的电话号码和电子邮件地址,这应该有效:

HTML表单代码:

<form onsubmit="return validateInput()">
  <input type="text" name"mail_or_phone"/>
</form>

JS验证:

function validateInput()
{
  var fieldValue= document.getElementById("mail_or_phone").value;

  // taken from this SO post: http://stackoverflow.com/questions/7126345/regular-expression-to-require-10-digits-without-considering-spaces      
  var phoneValidation= /^([\s\(\)\-]*\d[\s\(\)\-]*){8}$/; 
  var mailValidation= /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;

  if (fieldValue.match(phoneValidation)) {
    // correct phone structure
    return true;
  } else if (fieldValue.match(mailValidation)) {
    // correct mail format
    return true;
  } else {
    // incorrect structure
    return false;
  }
}

这是一个显示上述代码示例的小提琴 如果答案不正确,您应该显示某种警告(不包含在代码中)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM