表单验证 - 电子邮件验证在AngularJs中无法正常工作

Yas*_*ser 24 angularjs

我正在使用Angular进行表单验证.

这是我使用的 - plunker-edit我从Angularjs文档中获取了这些代码 - 绑定到窗体和控件状态已经使用了类型,email但是当我运行它并输入abc@abc它时说它是有效的.我该如何解决 ?

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Example - example-example100-production</title>


  <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.8/angular.min.js"></script>
  <script src="script.js"></script>



</head>
<body ng-app="">
    <div ng-controller="Controller">
    <form name="form" class="css-form" novalidate>
      E-mail:
        <input type="email" ng-model="user.email" name="uEmail" required/><br />
      <div ng-show="form.uEmail.$dirty && form.uEmail.$invalid">Invalid:
        <span ng-show="form.uEmail.$error.required">Tell us your email.</span>
        <span ng-show="form.uEmail.$error.email">This is not a valid email.</span>
      </div>
    </form>
  </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

PS:我是AngularJs的初学者

编辑:

此外,以下输入也显示有效

  • AAA @ AAA
  • aaa---aaa@gmail.com
  • aaa`aaa @ AAA

预期的有效电子邮件

  • aabc@ddd.com
  • aaa.aaa@fddd.co.in
  • aaa@ddd.co.uk

小智 36

请参阅我的另一个答案:AngularJS v1.3.x电子邮件验证问题

尝试在电子邮件输入中使用ng-pattern.

<input type="email" name="input" ng-model="text" ng-pattern="/^[_a-z0-9]+(\.[_a-z0-9]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/" required>
Run Code Online (Sandbox Code Playgroud)

它适合您的有效和无效案件.

看一个例子:plunk

  • 如果电子邮件的第一个字母大写,则会失败.即Bob@company.com失败,但bob@company.com没有.我使用这个正则表达式 - "ng-pattern =".{1,} @ [_ a-z0-9A-Z] +(\.[a-z0-9A-Z] +)+"` (11认同)
  • 当我使用`pattern`而不是`ng-pattern`时,只对我有用 (6认同)