角度ng-pattern匹配任何非单词,非空格,非数字不起作用?

时间:2015-07-21 19:59:34

标签: regex angularjs validation ng-pattern



<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>
&#13;
&#13;
&#13;

模式是:
/ [A-z0-9] + /

出于某种原因,这种角度融合的html并没有像我期待的那样发挥作用。 我期待发生的是,一旦用户输入非字,非数字,非空格字符,输入变为无效,因此$ form.name。$ valid应为false。 / p>

相反,只要您输入的内容包含字母,数字或空格,输入变为$ valid就变为真。 所以:
lkajskdjf&LT;?{}
是有效的

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

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

&gt;有./..,./ 9K
已验证。

kjkljd lkjsdf 90
是有效的。

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

这里发生了什么? 为什么我期望的行为不是我得到的行为?

1 个答案:

答案 0 :(得分:3)

模式应该是/^[A-z0-9 ]+$/,其中^$符号分别表示“以...开头”和“以...结尾”。这意味着正则表达式将与您的角色类完全匹配。