2015-07-21 25 views
0

角ng模式匹配任何非字,非空格,非数字不工作?

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.4/angular.min.js"></script> 
 

 
<div ng-app> 
 
    <form class="edit-segment edit-form" name="form"> 
 
     <input type="text" class="form-control" ng-model="dname" name="name" maxlength="100" ng-pattern="/[A-z0-9 ]+/" ng-required='true' /> 
 
     <output>{{form}}</output> 
 
     <output>{{dname}}</output> 
 
     <output>{{form.name.$valid}}</output> 
 
    </form> 
 
</div>

的模式是:
/[A-Z0-9] +/

出于某种原因,该角度注入的HTML不是作用我期待的方式。 我期望发生的事情是,只要用户输入非字,非数字,非空格字符,输入变为无效,所以$ form.name。$ valid应该是false。

取而代之的是,只要您输入的内容包含字母,数字或空格,输入变为$ valid就会变为true。
这样:?
lkajskdjf < {}
有效

,,...,{} {] [],
无效。。

。,..,{} {] []。,\
有效。

?>?./...// 9k
有效。

kjkljd lkjsdf 90
是有效的。

唯一应该有效的是最后一个... 我对ng-pattern的理解显然是错误的,只要输入的字符与ng-pattern中的正则表达式匹配。

这是怎么回事?
为什么我期待的行为不是我所得到的行为?

回答

2

该模式应该可能是/^[A-z0-9 ]+$/,其中^$分别表示“开始于”和“结束于”。这将意味着正则表达式将完全匹配,只有你的角色类。

+0

?但这并不符合任何内容:http://regexr.com/3bebq –

+0

你很近;答案是/^[A-z0-9] * $/ –

+1

你说得对,我匆忙忘记了一个字。 :)我编辑了我的答案。 –

相关问题