【问题标题】:Regex problems with angularjsangularjs的正则表达式问题
【发布时间】:2014-11-21 16:35:26
【问题描述】:

我正在尝试使用正则表达式来验证电子邮件地址。它似乎根本没有进行任何验证。当我加载页面时,提交按钮由于 $pristine 而被禁用,但只要我输入一个字母,按钮就会启用。我也知道正则表达式目前只接受大写字母。以下代码是我的表单:

<form name="myForm" ng-hide="email" >

Insert Email :    <br/>

<input type="text" name="email" ng-pattern="/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]
{2,4}$/" ng-model="insert_email"  required> 

<br/>  
<button ng-hide="email" 
type="submit"  
ng-disabled="myForm.email.$pristine || myForm.email.$invalid">Submit</button>  

</form>

我不确定,但我认为问题可能出在正则表达式本身。

【问题讨论】:

  • 如果它可以帮助你,请检查它stackoverflow.com/questions/24490668/…
  • 我试过你的代码,当我输入一些文本时它没有激活提交按钮。你能为此创建一个演示吗?
  • 我使用 进行电子邮件验证。

标签: javascript html angularjs


【解决方案1】:

取出 myForm.email.$pristine 和 myForm.email.$invalid 中的电子邮件 看起来像:

 myForm.$pristine 

 myForm.$invalid

也可以尝试使用 ng-required 而不是 required

【讨论】:

    【解决方案2】:

    这似乎是两件事。看起来 ng-pattern 需要一个表达式而不是字符串属性。

    因此,如果您想使用inline expression,则需要将其包装在一个字符串中。

    像这样:

    ng-pattern="'^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$'"
    

    此外,您的正则表达式似乎存在一些问题。我把它改成了这样:

    ng-pattern="'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$'"
    

    它似乎有效。

    Plunker Demo

    【讨论】:

      猜你喜欢
      • 2011-01-25
      • 1970-01-01
      相关资源
      最近更新 更多