2016-12-14 75 views
0

我使用正则表达式来验证某些使用angularjs的表单输入。我使用ng-pattern正则表达式不按预期方式运行

<input type="text" ng-pattern="/^([A-z]){3}$/"> 
<button type="submit" ng-disabled="demoForm.$invalid">Ok</button> 

如果i型任何匹配它是表达不有效(如预期)。如果我输入匹配的模式,它将是有效的(如预期)。

但它没有像预期的那样工作。如果我什么都没输入(空文本输入),表单是有效的,那就是我想要避免的:它应该是无效的。

有什么建议吗?

+2

使输入'required'。 –

+1

你'[A-Z]'匹配'_'和']'....你确定要匹配它们吗?你用'/ ^([A-z]){3} $ /'不要说“完全是3 *字母*”。您还允许前导和尾随空格。 –

+0

这已经是我的想法了,但是我认为这种模式一定有问题,因为我说我想要3个字母 – nipeco

回答

1

您需要输入一个ng-model属性才能识别Angular form验证。您可能还想要输入一个name属性以获得更多控制。请参阅Angular Input documentation

本示例应演示ng-modelname如何用于表单验证。请注意,我也调整了你的正则表达式,并且输入了required

var myApp = angular.module('myApp', []);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<div ng-app="myApp"> 
 
    
 
    <form name="demoForm"> 
 
    
 
    <input type="text" 
 
      ng-model="myValue" 
 
      name="myInput" 
 
      ng-pattern="/^[A-Za-z]{3}$/" 
 
      required /> 
 
    
 
    <button type="submit" ng-disabled="demoForm.$invalid">Ok</button> 
 
    
 
    <div>Input valid? {{demoForm.myInput.$valid}}</div> 
 
    <div>Form valid? {{demoForm.$valid}}</div> 
 
    <div>Model value: {{myValue}}</div> 
 
    </form> 
 
    
 
</div>

相关问题