<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 应该是假的。
相反,只要你输入的内容包含字母、数字或空格,输入变为 $valid 就变为真。
所以:
lkajskdjf<.?{}
是有效的
.,.,..,{}{][].,
无效。
.,.,..,{}{][].,\
是有效的。
?>?./..,./9k
有效。
kjkljd lkjsdf 90
有效。
唯一应该有效的是最后一个......我对ng-pattern的理解显然是错误的,只要输入的字符与ng-pattern中的正则表达式匹配,输入才有效。
这里发生了什么?
为什么我期望的行为不是我得到的行为?